@Override
  public void processResources(@NotNull String dir,
                               @NotNull Predicate<? super String> nameFilter,
                               @NotNull BiConsumer<? super String, ? super InputStream> consumer) throws IOException {
    String[] names = this.names;
    if (names == null) {
      names = getOrComputeNames();
    }

    int minNameLength = dir.length() + 2;
    for (String name : names) {
      if (name.length() >= minNameLength && name.charAt(dir.length()) == '/' && name.startsWith(dir) && nameFilter.test(name)) {
        // DirectByteBufferBackedInputStream is not pooled - no need to close
        consumer.accept(name, getInputStream(name));
      }
    }
  }
@Override
  public void processResources(@NotNull String dir,
                               @NotNull Predicate<? super String> nameFilter,
                               @NotNull BiConsumer<? super String, ? super InputStream> consumer)