anchor.diff:        if (partOfUris.contains(libraryUriString)) {
           return;
         }
  +      libraryIndex
  +          .putIfAbsent(libraryUriString, () => new Set<String>())
  +          .add(summaryPath);
         Uri libraryUri = Uri.parse(libraryUriString);
         UnlinkedUnit definingUnlinkedUnit = unlinkedUnits[libraryUriString];
         if (definingUnlinkedUnit != null) {
  
positive.code:   /**
     * Collect all the inferred types contained in [bundle].
     */
    void visitPackageBundle(PackageBundle bundle) {
      Map<String, LinkedLibrary> linkedLibraries = <String, LinkedLibrary>{};
      Map<String, UnlinkedUnit> unlinkedUnits = <String, UnlinkedUnit>{};
      for (int i = 0; i < bundle.linkedLibraryUris.length; i++) {
        linkedLibraries[bundle.linkedLibraryUris[i]] = bundle.linkedLibraries[i];
      }
      for (int i = 0; i < bundle.unlinkedUnitUris.length; i++) {
        unlinkedUnits[bundle.unlinkedUnitUris[i]] = bundle.unlinkedUnits[i];
      }
      // Figure out which unlinked units are a part of another library so we won't
      // visit them redundantly.
  
negative.code:    * Print out all the inferred types collected so far, in alphabetical order.
     */
    void dumpCollectedTypes() {
      print('Collected types (${inferredTypes.length}):');
      List<String> paths = inferredTypes.keys.toList();
      paths.sort();
      for (String path in paths) {
        print('$path -> ${inferredTypes[path]}');
      }
    }
  
    /**
     * Print out an index mapping library names to the summary files containing
     * them.
     */
    void dumpLibraryIndex() {
      print('Library index:');
      List<String> libraryNames = libraryIndex.keys.toList();
      libraryNames.sort();
      for (String libraryName in libraryNames) {
        List<String> summaryFiles = libraryIndex[libraryName].toList();
        summaryFiles.sort();
        print('$libraryName -> ${summaryFiles.join(', ')}');
      }
      print('');
    }
  
    /**
     * Print out an index mapping part file names to the summary files containing
     * them.
     */
    void dumpPartIndex() {
      print('Part index:');
      List<String> partNames = partIndex.keys.toList();
      partNames.sort();
      for (String partName in partNames) {
        List<String> summaryFiles = partIndex[partName].toList();
        summaryFiles.sort();
        print('$partName -> ${summaryFiles.join(', ')}');
      }
      print('');
    }
  
    /**
  