| Index: pkg/analyzer/lib/src/summary/bazel_summary.dart
 | 
| diff --git a/pkg/analyzer/lib/src/summary/bazel_summary.dart b/pkg/analyzer/lib/src/summary/bazel_summary.dart
 | 
| index 60a132077929311f88955ce13ba2892d1091d6f6..b4413786a84f02ac7889a6ecd25bdf6449a08e42 100644
 | 
| --- a/pkg/analyzer/lib/src/summary/bazel_summary.dart
 | 
| +++ b/pkg/analyzer/lib/src/summary/bazel_summary.dart
 | 
| @@ -110,9 +110,14 @@ class SummaryProvider {
 | 
|    final Map<Folder, List<Package>> folderToPackagesMap = {};
 | 
|  
 | 
|    /**
 | 
| -   * Mapping from [Uri]s to corresponding [_LinkNode]s.
 | 
| +   * Mapping from [Uri]s to corresponding [Package]s.
 | 
|     */
 | 
| -  final Map<Uri, _LinkNode> uriToNodeMap = {};
 | 
| +  final Map<Uri, Package> uriToPackageMap = {};
 | 
| +
 | 
| +  /**
 | 
| +   * Mapping from [Package]s to corresponding [_LinkNode]s.
 | 
| +   */
 | 
| +  final Map<Package, _LinkNode> packageToNodeMap = {};
 | 
|  
 | 
|    SummaryProvider(this.provider, this.getOutputFolder, AnalysisContext context)
 | 
|        : context = context,
 | 
| @@ -162,17 +167,19 @@ class SummaryProvider {
 | 
|     */
 | 
|    @visibleForTesting
 | 
|    Package getUnlinkedForUri(Uri uri) {
 | 
| -    Folder outputFolder = getOutputFolder(uri);
 | 
| -    if (outputFolder != null) {
 | 
| -      String uriStr = uri.toString();
 | 
| -      List<Package> packages = _getUnlinkedPackages(outputFolder);
 | 
| -      for (Package package in packages) {
 | 
| -        if (package._unitUris.contains(uriStr)) {
 | 
| -          return package;
 | 
| +    return uriToPackageMap.putIfAbsent(uri, () {
 | 
| +      Folder outputFolder = getOutputFolder(uri);
 | 
| +      if (outputFolder != null) {
 | 
| +        String uriStr = uri.toString();
 | 
| +        List<Package> packages = _getUnlinkedPackages(outputFolder);
 | 
| +        for (Package package in packages) {
 | 
| +          if (package._unitUris.contains(uriStr)) {
 | 
| +            return package;
 | 
| +          }
 | 
|          }
 | 
|        }
 | 
| -    }
 | 
| -    return null;
 | 
| +      return null;
 | 
| +    });
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| @@ -191,8 +198,8 @@ class SummaryProvider {
 | 
|     * bundle that contains [uri].
 | 
|     */
 | 
|    _LinkNode _getLinkNodeForUri(Uri uri) {
 | 
| -    return uriToNodeMap.putIfAbsent(uri, () {
 | 
| -      Package package = getUnlinkedForUri(uri);
 | 
| +    Package package = getUnlinkedForUri(uri);
 | 
| +    return packageToNodeMap.putIfAbsent(package, () {
 | 
|        if (package == null) {
 | 
|          return null;
 | 
|        }
 | 
| 
 |