anchor.diff:    List<Uri> _sourceUriTable = const [];
     List<Constant> _constantTable = const <Constant>[];
     late List<CanonicalName> _linkTable;
  +  late Map<int, DartType?> _cachedSimpleInterfaceTypes;
     int _transformerFlags = 0;
     Library? _currentLibrary;
     int _componentStartOffset = 0;
  
positive.code:         // Use [linkRoot] as a dummy default value.
          linkRoot,
          growable: false);
      for (int i = 0; i < length; ++i) {
        int biasedParentIndex = readUInt30();
        String name = readStringReference();
  
negative.code:   }
  
    DartType _readSimpleInterfaceType(bool forSupertype) {
      final int nullabilityIndex = readByte();
      final int classReferenceIndex = readUInt30();
      final CanonicalName? canonicalName =
          getNullableCanonicalNameReferenceFromInt(classReferenceIndex);
      if (canonicalName == null) {
        throw 'Expected a class reference to be valid but was `null`.';
      }
  
      // We check this before the cache to not return a wrong cached value for
      // this special case.
      if (!forSupertype &&
          canonicalName.name == "Null" &&
          canonicalName.parent!.name == "dart:core" &&
          canonicalName.parent!.parent!.isRoot) {
        return const NullType();
      }
  
      // Check cache.
      final int cacheIndex =
          (classReferenceIndex - 1) * Nullability.values.length +
              nullabilityIndex;
      final DartType? cached = _cachedSimpleInterfaceTypes[cacheIndex];
      if (cached != null) {
        return cached;
      }
  
      // Not in cache.
      final Reference classReference = canonicalName.reference;
      final DartType result = new InterfaceType.byReference(classReference,
          Nullability.values[nullabilityIndex], const <DartType>[]);
      _cachedSimpleInterfaceTypes[cacheIndex] = result;
      return result;
    }
  
    DartType _readFunctionType() {
  