/** Performs the dependency analysis on the given archives. */ public void run(List<Archive> archives) { // build a map from Location to Archive for (Archive archive : archives) { for (Location l : archive.getClasses()) { if (!map.containsKey(l)) { map.put(l, archive); } else { // duplicated class warning? } } } // traverse and analyze all dependencies for (Archive archive : archives) { ArchiveDeps deps; if (type == Type.CLASS || type == Type.VERBOSE) { deps = new ClassVisitor(archive); } else { deps = new PackageVisitor(archive); } archive.visitDependences(deps); results.put(archive, deps); } }