code: private Collection<String> scanJar(URI u, Predicate<Path> pathPredicate) {
          try (FileSystem fs = FileSystems.newFileSystem(u, READY_ONLY_ENV)) {
              return Files.walk(fs.getPath("/"))
                          .filter(pathPredicate)
                          .map(f -> toFQName(f.toAbsolutePath()))
                          .distinct()
                          .collect(Collectors.toList());
          } catch (IOException e) {
              throw new RuntimeException(e);
          }
      }
docs: Scans the jar and filters all elements
  
  @param u
  the uri of the jar file to be scanned
  @param pathPredicate
  the matching predicate for collecting the entries
  
  @return a stream of collected strings