@Override
  public DirectoryStream<Path> newDirectoryStream(Path dir, @Nullable DirectoryStream.Filter<? super Path> filter) throws IOException {
    return new DirectoryStream<Path>() {
      final DirectoryStream<Path> myStream = getDelegate(dir, null)
        .newDirectoryStream(
          fromDelegatePath(dir),
          (
            filter != null
            ? p -> filter.accept(fromDelegatePath(p))
            : null
          )
        );

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

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

          @Override
          public Path next() {
            return toDelegatePath(myIterator.next());
          }
        };
      }

      @Override
      public void close() throws IOException {
        myStream.close();
      }
    };
  }
@Override
  public DirectoryStream<Path> newDirectoryStream(Path dir, @Nullable DirectoryStream.Filter<? super Path> filter)