anchor.diff:      uriToUnlinkedUnit[uriStr] = unlinkedUnit;
       sourceToUnlinkedUnit[source] = unlinkedUnit;
   
  -    void enqueueSource(String relativeUri) {
  +    void enqueueSource(String relativeUri, bool shouldBeLibrary) {
         var sourceUri = resolveRelativeUri(uri, Uri.parse(relativeUri));
         if (_knownSources.add(sourceUri)) {
           _pendingSource.add(sourceUri);
  +        if (shouldBeLibrary) {
  +          _expectedLibraryUris.add(sourceUri);
  +        }
         }
       }
   
  
positive.code:   /// we only visit a given source once.
    var _knownSources = Set<Uri>();
  
    final Map<Source, UnlinkedUnitBuilder> sourceToUnlinkedUnit = {};
    final Map<String, UnlinkedUnitBuilder> uriToUnlinkedUnit = {};
    final Map<Source, CompilationUnit> sourceToUnit = {};
  
negative.code:     var inputLibraries = <summary2.LinkInputLibrary>[];
  
      var sourceToUnit = _fileCrawler.sourceToUnit;
      var librarySourcesToLink = <Source>[]
        ..addAll(_fileCrawler.librarySources)
        ..addAll(_fileCrawler._invalidLibrarySources);
      for (var librarySource in librarySourcesToLink) {
        var libraryUriStr = '${librarySource.uri}';
        var unit = sourceToUnit[librarySource];
  
  