code: private void transitiveArchiveDeps(int depth) throws IOException {
          Stream<Location> deps = archives.stream()
                                          .flatMap(Archive::getDependencies);
  
          // start with the unresolved archives
          Set<Archive> unresolved = unresolvedArchives(deps);
          do {
              // parse all unresolved archives
              Set<Location> targets = apiOnly
                  ? finder.parseExportedAPIs(unresolved.stream())
                  : finder.parse(unresolved.stream());
              archives.addAll(unresolved);
  
              // Add dependencies to the next batch for analysis
              unresolved = unresolvedArchives(targets.stream());
          } while (!unresolved.isEmpty() && depth-- > 0);
      }
docs: /*
  Recursively analyzes entire module/archives.