public void indexJarFile(Path jarFilePath)
            throws IOException {
        try (ZipInputStream zip = new ZipInputStream(new FileInputStream(jarFilePath.toString()))) {

            for (ZipEntry entry = zip.getNextEntry(); entry != null; entry = zip.getNextEntry()) {
                if ((entry.getName().endsWith(".class")) && (!entry.isDirectory())) {

                    StringBuilder className = new StringBuilder();
                    for (String part : entry.getName().split("/")) {
                        if (className.length() != 0) {
                            className.append(".");
                        }
                        className.append(part);
                        if (part.endsWith(".class")) {
                            className.setLength(className.length() - ".class".length());
                        }
                    }
                    this.index.put(className.toString(), jarFilePath.toAbsolutePath().toString());
                }
            }
        }
    }