anchor.diff:    for (String arg in args) {
       PackageBundle bundle =
           new PackageBundle.fromBuffer(new File(arg).readAsBytesSync());
  -    collector.visitPackageBundle(bundle);
  -  }
  +    collector.visitPackageBundle(bundle, arg);
  +  }
  +  collector.dumpLibraryIndex();
  +  collector.dumpPartIndex();
     collector.dumpCollectedTypes();
   }
   
  
positive.code:       if (partOfUris.contains(libraryUriString)) {
          return;
        }
        Uri libraryUri = Uri.parse(libraryUriString);
        UnlinkedUnit definingUnlinkedUnit = unlinkedUnits[libraryUriString];
        if (definingUnlinkedUnit != null) {
  
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('');
    }
  
    /**
  