anchor.diff:    /// we only visit a given source once.
     var _knownSources = Set<Uri>();
   
  +  /// The set of URIs that expected to be libraries.
  +  ///
  +  /// Some of the might turn out to have `part of` directive, and so reported
  +  /// later. However we still must be able to provide some element for them
  +  /// when requested via `import` or `export` directives.
  +  final Set<Uri> _expectedLibraryUris = Set<Uri>();
  +
  +  /// The list of sources with URIs that [_expectedLibraryUris], but turned
  +  /// out to be parts. We still add them into summaries, but don't resolve
  +  /// them as units.
  +  final List<Source> _invalidLibrarySources = [];
  +
     final Map<Source, UnlinkedUnitBuilder> sourceToUnlinkedUnit = {};
     final Map<String, UnlinkedUnitBuilder> uriToUnlinkedUnit = {};
     final Map<Source, CompilationUnit> sourceToUnit = {};
  
positive.code:     var inputLibraries = <summary2.LinkInputLibrary>[];
  
      var sourceToUnit = _fileCrawler.sourceToUnit;
      for (var librarySource in _fileCrawler.librarySources) {
        var libraryUriStr = '${librarySource.uri}';
        var unit = sourceToUnit[librarySource];
  
  
negative.code:     if (!isPart) {
        libraryUris.add(uriStr);
        librarySources.add(source);
      } else if (_expectedLibraryUris.contains(uri)) {
        _invalidLibrarySources.add(source);
      }
    }
  }
  