@Override
  public Iterable<Path> getRootDirectories() {
    return new Iterable<Path>() {
      final Iterable<Path> myIterable = getDelegate().getRootDirectories();

      @NotNull
      @Override
      public Iterator<Path> iterator() {
        return new Iterator<Path>() {
          final Iterator<Path> myIterator = myIterable.iterator();

          @Override
          public boolean hasNext() {
            return myIterator.hasNext();
          }

          @Override
          public Path next() {
            return provider().toDelegatePath(myIterator.next());
          }
        };
      }
    };
  }
@Override
  public Iterable<Path> getRootDirectories()