code: public void visitDependences(Archive source, Visitor v, Type level) {
          if (level == Type.SUMMARY) {
              final ArchiveDeps result = results.get(source);
              SortedMap<String, Archive> sorted = new TreeMap<>();
              for (Archive a : result.requires()) {
                  sorted.put(a.getName(), a);
              }
              for (Archive archive : sorted.values()) {
                  Profile profile = result.getTargetProfile(archive);
                  v.visitDependence(source.getName(), source,
                                    profile != null ? profile.profileName() : archive.getName(), archive);
              }
          } else {
              ArchiveDeps result = results.get(source);
              if (level != type) {
                  // requesting different level of analysis
                  result = new ArchiveDeps(source, level);
                  source.visitDependences(result);
              }
              SortedSet<Dep> sorted = new TreeSet<>(result.dependencies());
              for (Dep d : sorted) {
                  v.visitDependence(d.origin(), d.originArchive(), d.target(), d.targetArchive());
              }
          }
      }
docs: Visit the dependencies of the given source.
  If the requested level is SUMMARY, it will visit the required archives list.