anchor.diff:    /// Completes with an [AssetNotFoundException] if the asset couldn't be built.
     Map<AssetId, Future<Asset>> _buildAsset(AssetId id,
         {logError(String message)}) {
  +    if (_assetCache[id] != null) return {id: _assetCache[id]};
       logError ??= log.error;
       Map<AssetId, Future<Asset>> assets;
       if (id.path.endsWith(unlinkedSummaryExtension)) {
  
positive.code:   }
  }
  
  /// Gives the dart entrypoint [AssetId] for a bootstrap js [id].
  AssetId _entrypointDartId(AssetId id) {
    if (id.extension == '.map') id = id.changeExtension('');
    assert(id.path.endsWith('.bootstrap.js') || id.path.endsWith('.dart.js'));
  
negative.code:       var jsId = id.extension == '.map' ? id.changeExtension('') : id;
        assets = createDartdevcModule(jsId, _moduleReader, _scratchSpace,
            _environmentConstants, _mode, logError);
        // Pre-emptively start building all transitive JS deps under the
        // assumption they will be needed in the near future.
        runZoned(() async {
          var module = await _moduleReader.moduleFor(jsId);
          var deps = await _moduleReader.readTransitiveDeps(module);
          deps.forEach((moduleId) => getAssetById(moduleId.jsId));
        }, onError: (_) {
          // Ignore uncaught for now, the cached futures will contain the errors
          // to respond with for later requests. Since nobody is awaiting these
          // futures yet they end up bubbling up as uncaught errors unless we trap
          // them here.
        });
      } else if (id.path.endsWith(moduleConfigName)) {
        assets = {id: _buildModuleConfig(id)};
      }
  