anchor.diff:  import 'package:analyzer/src/generated/utilities_dart.dart';
   import 'package:analyzer/src/summary/base.dart';
   import 'package:analyzer/src/summary/idl.dart';
  +import 'package:analyzer/src/summary/package_bundle_reader.dart';
   
   /**
    * Collect the inferred types from all the summary files listed in [args] and
    * print them in alphabetical order.
    */
   main(List<String> args) {
  +  SummaryDataStore summaryDataStore = new SummaryDataStore(args);
     InferredTypeCollector collector = new InferredTypeCollector();
  -  for (String arg in args) {
  -    PackageBundle bundle =
  -        new PackageBundle.fromBuffer(new File(arg).readAsBytesSync());
  -    collector.visitPackageBundle(bundle, arg);
  -  }
  -  collector.dumpLibraryIndex();
  -  collector.dumpPartIndex();
  +  collector.visitSummaryDataStore(summaryDataStore);
     collector.dumpCollectedTypes();
   }
   
  
positive.code:               Uri.parse(definingUnlinkedUnit.publicNamespace.parts[i]);
            String unitUriString =
                resolveRelativeUri(libraryUri, relativePartUri).toString();
            UnlinkedUnit unlinkedUnit = unlinkedUnits[unitUriString];
            if (unlinkedUnit != null) {
              visitUnit(
                  unlinkedUnit, linkedLibrary.units[i + 1], libraryUriString);
  
negative.code:   LinkedUnit linkedUnit;
    final Map<String, String> inferredTypes = <String, String>{};
    List<String> typeParamsInScope = <String>[];
  
    /**
     * If an inferred type exists matching the given [slot], record that it is the
  