code: public static boolean indexJar(final Indexer indexer, final List<File> knownFiles, final File jarFile) {
  
          if (knownFiles.contains(jarFile)) {
              return false;
          }
          knownFiles.add(jarFile);
  
          try (final JarFile jar = new JarFile(jarFile)) {
              final Enumeration<JarEntry> entries = jar.entries();
              while (entries.hasMoreElements()) {
                  final JarEntry entry = entries.nextElement();
                  if (entry.getName().endsWith(".class")) {
                      try (final InputStream stream = jar.getInputStream(entry)) {
                          indexer.index(stream);
                      } catch (final IOException ex) {
                          throw new RuntimeException("Error indexing " + entry.getName() + " in " + jarFile, ex);
                      }
                  }
  
              }
          } catch (final IOException ex) {
              throw new RuntimeException("Error indexing " + jarFile, ex);
          }
  
          return true;
      }
docs: Indexes a single JAR, except it was already analyzed.
  
  @param indexer
  Indexer to use.
  @param knownFiles
  List of files already analyzed. New files will be added within this method.
  @param jarFile
  JAR to analyze.
  
  @return TRUE if the JAR was indexed or FALSE if it was ignored.