diff --git a/CHANGELOG.md b/CHANGELOG.md
index 55f8cdd..7438d5d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -26,6 +26,11 @@
   non-final variable.
 - fix`use_build_context_synchronously` to handle `await`s in `if` conditions.
 
+#### `dart:io`
+
+- **Breaking Change** [#49305](https://github.com/dart-lang/sdk/issues/49305):
+  Disallow negative or hexadecimal content-length headers.
+
 ## 2.18.0
 
 ### Language
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/change_to.dart b/pkg/analysis_server/lib/src/services/correction/dart/change_to.dart
index 1a88115..ff8ea9d 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/change_to.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/change_to.dart
@@ -30,8 +30,8 @@
   /// Initialize a newly created instance that will propose classes and mixins.
   ChangeTo.classOrMixin() : _kind = _ReplacementKind.classOrMixin;
 
-  /// Initialize a newly created instance that will propose formal parameters.
-  ChangeTo.formalParameter() : _kind = _ReplacementKind.formalParameter;
+  /// Initialize a newly created instance that will propose fields.
+  ChangeTo.field() : _kind = _ReplacementKind.field;
 
   /// Initialize a newly created instance that will propose functions.
   ChangeTo.function() : _kind = _ReplacementKind.function;
@@ -42,6 +42,11 @@
   /// Initialize a newly created instance that will propose methods.
   ChangeTo.method() : _kind = _ReplacementKind.method;
 
+  /// Initialize a newly created instance that will propose super formal
+  /// parameters.
+  ChangeTo.superFormalParameter()
+      : _kind = _ReplacementKind.superFormalParameter;
+
   @override
   List<Object> get fixArguments => [_proposedName];
 
@@ -58,14 +63,16 @@
       await _proposeAnnotation(builder);
     } else if (_kind == _ReplacementKind.classOrMixin) {
       await _proposeClassOrMixin(builder, node);
-    } else if (_kind == _ReplacementKind.formalParameter) {
-      await _proposeFormalParameter(builder);
+    } else if (_kind == _ReplacementKind.field) {
+      await _proposeField(builder);
     } else if (_kind == _ReplacementKind.function) {
       await _proposeFunction(builder);
     } else if (_kind == _ReplacementKind.getterOrSetter) {
       await _proposeGetterOrSetter(builder);
     } else if (_kind == _ReplacementKind.method) {
       await _proposeMethod(builder);
+    } else if (_kind == _ReplacementKind.superFormalParameter) {
+      await _proposeSuperFormalParameter(builder);
     }
   }
 
@@ -123,76 +130,69 @@
     }
   }
 
-  Future<void> _proposeClassOrMixinMember(ChangeBuilder builder,
-      Expression? target, _ElementPredicate predicate) async {
-    final node = this.node;
+  Future<void> _proposeClassOrMixinMember(
+      ChangeBuilder builder,
+      SimpleIdentifier node,
+      Expression? target,
+      _ElementPredicate predicate) async {
     var targetIdentifierElement =
         target is Identifier ? target.staticElement : null;
-    if (node is SimpleIdentifier) {
-      var finder = _ClosestElementFinder(node.name, predicate);
-      // unqualified invocation
-      if (target == null) {
-        var clazz = node.thisOrAncestorOfType<ClassDeclaration>();
-        if (clazz != null) {
-          var classElement = clazz.declaredElement!;
-          _updateFinderWithClassMembers(finder, classElement);
-        }
-      } else if (target is ExtensionOverride) {
-        _updateFinderWithExtensionMembers(finder, target.staticElement);
-      } else if (targetIdentifierElement is ExtensionElement) {
-        _updateFinderWithExtensionMembers(finder, targetIdentifierElement);
-      } else {
-        var classElement = getTargetClassElement(target);
-        if (classElement != null) {
-          _updateFinderWithClassMembers(finder, classElement);
-        }
+    var finder = _ClosestElementFinder(node.name, predicate);
+    // unqualified invocation
+    if (target == null) {
+      var clazz = node.thisOrAncestorOfType<ClassDeclaration>();
+      if (clazz != null) {
+        var classElement = clazz.declaredElement!;
+        _updateFinderWithClassMembers(finder, classElement);
       }
-      // if we have close enough element, suggest to use it
-      await _suggest(builder, node, finder._element?.displayName);
+    } else if (target is ExtensionOverride) {
+      _updateFinderWithExtensionMembers(finder, target.staticElement);
+    } else if (targetIdentifierElement is ExtensionElement) {
+      _updateFinderWithExtensionMembers(finder, targetIdentifierElement);
+    } else {
+      var classElement = getTargetClassElement(target);
+      if (classElement != null) {
+        _updateFinderWithClassMembers(finder, classElement);
+      }
     }
+    // if we have close enough element, suggest to use it
+    await _suggest(builder, node, finder._element?.displayName);
   }
 
-  Future<void> _proposeFormalParameter(ChangeBuilder builder) async {
-    var parent = node.parent;
-    if (parent is! SuperFormalParameter) return;
+  Future<void> _proposeField(ChangeBuilder builder) async {
+    final node = this.node;
+    if (node is! FieldFormalParameter) return;
 
+    var exclusions = <String>{};
     var constructorDeclaration =
-        parent.thisOrAncestorOfType<ConstructorDeclaration>();
-    if (constructorDeclaration == null) return;
-
-    var formalParameters = constructorDeclaration.parameters.parameters
-        .whereType<DefaultFormalParameter>();
-
-    var finder =
-        _ClosestElementFinder(parent.identifier.name, (Element e) => true);
-
-    var superInvocation = constructorDeclaration.initializers.lastOrNull;
-
-    if (superInvocation is SuperConstructorInvocation) {
-      var staticElement = superInvocation.staticElement;
-      if (staticElement == null) return;
-
-      var list = _formalParameterSuggestions(staticElement, formalParameters);
-      finder._updateList(list);
-    } else {
-      var targetClassNode = parent.thisOrAncestorOfType<ClassDeclaration>();
-      if (targetClassNode == null) return;
-
-      var targetClassElement = targetClassNode.declaredElement!;
-      var superType = targetClassElement.supertype;
-      if (superType == null) return;
-
-      for (var constructor in superType.constructors) {
-        if (constructor.name.isEmpty) {
-          var list = _formalParameterSuggestions(constructor, formalParameters);
-          finder._updateList(list);
-          break;
+        node.thisOrAncestorOfType<ConstructorDeclaration>();
+    var initializers = constructorDeclaration?.initializers;
+    if (initializers != null) {
+      for (var initializer in initializers) {
+        if (initializer is ConstructorFieldInitializer) {
+          exclusions.add(initializer.fieldName.name);
+        }
+      }
+    }
+    var formalParameterList = node.thisOrAncestorOfType<FormalParameterList>();
+    if (formalParameterList != null) {
+      for (var parameter in formalParameterList.parameters) {
+        var name = parameter.identifier?.name;
+        if (name != null) {
+          exclusions.add(name);
         }
       }
     }
 
-    // If we have a close enough element, suggest to use it.
-    await _suggest(builder, node, finder._element?.name);
+    var type = node.type?.type;
+    await _proposeClassOrMixinMember(builder, node.identifier, null,
+        (Element element) {
+      return element is FieldElement &&
+          !exclusions.contains(element.name) &&
+          !element.isSynthetic &&
+          !element.isExternal &&
+          (type == null || typeSystem.isAssignableTo(type, element.type));
+    });
   }
 
   Future<void> _proposeFunction(ChangeBuilder builder) async {
@@ -245,7 +245,8 @@
       // find getter or setter
       var wantGetter = node.inGetterContext();
       var wantSetter = node.inSetterContext();
-      await _proposeClassOrMixinMember(builder, target, (Element element) {
+      await _proposeClassOrMixinMember(builder, node, target,
+          (Element element) {
         if (element is PropertyAccessorElement) {
           return wantGetter && element.isGetter ||
               wantSetter && element.isSetter;
@@ -259,13 +260,57 @@
   }
 
   Future<void> _proposeMethod(ChangeBuilder builder) async {
+    final node = this.node;
     var parent = node.parent;
-    if (parent is MethodInvocation) {
-      await _proposeClassOrMixinMember(builder, parent.realTarget,
+    if (parent is MethodInvocation && node is SimpleIdentifier) {
+      await _proposeClassOrMixinMember(builder, node, parent.realTarget,
           (Element element) => element is MethodElement && !element.isOperator);
     }
   }
 
+  Future<void> _proposeSuperFormalParameter(ChangeBuilder builder) async {
+    var parent = node.parent;
+    if (parent is! SuperFormalParameter) return;
+
+    var constructorDeclaration =
+        parent.thisOrAncestorOfType<ConstructorDeclaration>();
+    if (constructorDeclaration == null) return;
+
+    var formalParameters = constructorDeclaration.parameters.parameters
+        .whereType<DefaultFormalParameter>();
+
+    var finder =
+        _ClosestElementFinder(parent.identifier.name, (Element e) => true);
+
+    var superInvocation = constructorDeclaration.initializers.lastOrNull;
+
+    if (superInvocation is SuperConstructorInvocation) {
+      var staticElement = superInvocation.staticElement;
+      if (staticElement == null) return;
+
+      var list = _formalParameterSuggestions(staticElement, formalParameters);
+      finder._updateList(list);
+    } else {
+      var targetClassNode = parent.thisOrAncestorOfType<ClassDeclaration>();
+      if (targetClassNode == null) return;
+
+      var targetClassElement = targetClassNode.declaredElement!;
+      var superType = targetClassElement.supertype;
+      if (superType == null) return;
+
+      for (var constructor in superType.constructors) {
+        if (constructor.name.isEmpty) {
+          var list = _formalParameterSuggestions(constructor, formalParameters);
+          finder._updateList(list);
+          break;
+        }
+      }
+    }
+
+    // If we have a close enough element, suggest to use it.
+    await _suggest(builder, node, finder._element?.name);
+  }
+
   Future<void> _suggest(
       ChangeBuilder builder, AstNode node, String? name) async {
     if (name != null) {
@@ -333,8 +378,9 @@
 enum _ReplacementKind {
   annotation,
   classOrMixin,
-  formalParameter,
+  field,
   function,
   getterOrSetter,
-  method
+  method,
+  superFormalParameter,
 }
diff --git a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
index c3cc63d..57a79eb 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -960,6 +960,7 @@
       CreateClass.new,
     ],
     CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXISTENT_FIELD: [
+      ChangeTo.field,
       CreateField.new,
     ],
     CompileTimeErrorCode.INSTANCE_ACCESS_TO_STATIC_MEMBER: [
@@ -1070,7 +1071,7 @@
       ReplaceReturnType.new,
     ],
     CompileTimeErrorCode.SUPER_FORMAL_PARAMETER_WITHOUT_ASSOCIATED_NAMED: [
-      ChangeTo.formalParameter,
+      ChangeTo.superFormalParameter,
     ],
     CompileTimeErrorCode.SWITCH_CASE_COMPLETES_NORMALLY: [
       AddSwitchCaseBreak.new,
diff --git a/pkg/analysis_server/test/src/services/correction/fix/change_to_test.dart b/pkg/analysis_server/test/src/services/correction/fix/change_to_test.dart
index c652290..0f5c01d 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/change_to_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/change_to_test.dart
@@ -194,6 +194,78 @@
 ''');
   }
 
+  Future<void> test_fieldFormalParameter_external() async {
+    await resolveTestCode('''
+class C {
+  external int one;
+  C(this.oen);
+}
+''');
+    await assertNoFix();
+  }
+
+  Future<void> test_fieldFormalParameter_getter() async {
+    await resolveTestCode('''
+class C {
+  int get one => 1;
+  C(this.oen);
+}
+''');
+    await assertNoFix();
+  }
+
+  Future<void> test_fieldFormalParameter_initializer() async {
+    await resolveTestCode('''
+class C {
+  int one;
+  C(this.oen): one = 1;
+}
+''');
+    await assertNoFix();
+  }
+
+  Future<void> test_fieldFormalParameter_used() async {
+    await resolveTestCode('''
+class C {
+  int one;
+  C(this.one, this.oen);
+}
+''');
+    await assertNoFix();
+  }
+
+  Future<void> test_fieldFormalParameter_withoutType() async {
+    await resolveTestCode('''
+class C {
+  var one;
+  C(this.oen);
+}
+''');
+    await assertHasFix('''
+class C {
+  var one;
+  C(this.one);
+}
+''');
+  }
+
+  Future<void> test_fieldFormalParameter_withType() async {
+    await resolveTestCode('''
+class C {
+  int one = 1;
+  var done = '';
+  C(String this.on);
+}
+''');
+    await assertHasFix('''
+class C {
+  int one = 1;
+  var done = '';
+  C(String this.done);
+}
+''');
+  }
+
   Future<void> test_function_fromImport() async {
     await resolveTestCode('''
 void f() {
diff --git a/pkg/analyzer/lib/src/summary2/top_level_inference.dart b/pkg/analyzer/lib/src/summary2/top_level_inference.dart
index d6be12e..d9e2f98 100644
--- a/pkg/analyzer/lib/src/summary2/top_level_inference.dart
+++ b/pkg/analyzer/lib/src/summary2/top_level_inference.dart
@@ -47,7 +47,7 @@
         unit.extensions.forEach(_resolveExtensionFields);
         unit.mixins.forEach(_resolveClassFields);
 
-        _scope = builder.element.scope;
+        _scope = unit.enclosingElement2.scope;
         unit.topLevelVariables.forEach(_resolveVariable);
       }
     }
diff --git a/pkg/analyzer/test/src/summary/elements_test.dart b/pkg/analyzer/test/src/summary/elements_test.dart
index 195bceb..6742fe3 100644
--- a/pkg/analyzer/test/src/summary/elements_test.dart
+++ b/pkg/analyzer/test/src/summary/elements_test.dart
@@ -78,6 +78,173 @@
 ''');
   }
 
+  test_augmentation_class_constructor_superConstructor_generic_named() async {
+    newFile('$testPackageLibPath/a.dart', r'''
+library augment 'test.dart';
+class B extends A<int> {
+  B() : super.named(0);
+}
+''');
+    var library = await buildLibrary('''
+import augment 'a.dart';
+class A<T> {
+  A.named(T a);
+}
+''');
+    checkElementText(library, r'''
+library
+  augmentationImports
+    package:test/a.dart
+      definingUnit
+        classes
+          class B @35
+            supertype: A<int>
+            constructors
+              @56
+                superConstructor: ConstructorMember
+                  base: self::@class::A::@constructor::named
+                  substitution: {T: int}
+  definingUnit
+    classes
+      class A @31
+        typeParameters
+          covariant T @33
+            defaultType: dynamic
+        constructors
+          named @42
+            periodOffset: 41
+            nameEnd: 47
+            parameters
+              requiredPositional a @50
+                type: T
+''');
+  }
+
+  test_augmentation_class_constructor_superConstructor_notGeneric_named() async {
+    newFile('$testPackageLibPath/a.dart', r'''
+library augment 'test.dart';
+class B extends A {
+  B() : super.named();
+}
+''');
+    var library = await buildLibrary('''
+import augment 'a.dart';
+class A {
+  A.named();
+}
+''');
+    checkElementText(library, r'''
+library
+  augmentationImports
+    package:test/a.dart
+      definingUnit
+        classes
+          class B @35
+            supertype: A
+            constructors
+              @51
+                superConstructor: self::@class::A::@constructor::named
+  definingUnit
+    classes
+      class A @31
+        constructors
+          named @39
+            periodOffset: 38
+            nameEnd: 44
+''');
+  }
+
+  test_augmentation_class_constructor_superConstructor_notGeneric_unnamed_explicit() async {
+    newFile('$testPackageLibPath/a.dart', r'''
+library augment 'test.dart';
+class B extends A {
+  B() : super();
+}
+''');
+    var library = await buildLibrary('''
+import augment 'a.dart';
+class A {}
+''');
+    checkElementText(library, r'''
+library
+  augmentationImports
+    package:test/a.dart
+      definingUnit
+        classes
+          class B @35
+            supertype: A
+            constructors
+              @51
+                superConstructor: self::@class::A::@constructor::•
+  definingUnit
+    classes
+      class A @31
+        constructors
+          synthetic @-1
+''');
+  }
+
+  test_augmentation_class_notSimplyBounded_circularity_via_typedef() async {
+    // C's type parameter T is not simply bounded because its bound, F, expands
+    // to `dynamic F(C)`, which refers to C.
+    newFile('$testPackageLibPath/a.dart', r'''
+library augment 'test.dart';
+class C<T extends F> {}
+''');
+    var library = await buildLibrary('''
+import augment 'a.dart';
+typedef F(C value);
+''');
+    checkElementText(library, r'''
+library
+  augmentationImports
+    package:test/a.dart
+      definingUnit
+        classes
+          notSimplyBounded class C @35
+            typeParameters
+              covariant T @37
+                bound: dynamic
+                defaultType: dynamic
+            constructors
+              synthetic @-1
+  definingUnit
+    typeAliases
+      functionTypeAliasBased notSimplyBounded F @33
+        aliasedType: dynamic Function(C<dynamic>)
+        aliasedElement: GenericFunctionTypeElement
+          parameters
+            requiredPositional value @37
+              type: C<dynamic>
+          returnType: dynamic
+''');
+  }
+
+  test_augmentation_class_notSimplyBounded_self() async {
+    newFile('$testPackageLibPath/a.dart', r'''
+library augment 'test.dart';
+class C<T extends C> {}
+''');
+    var library = await buildLibrary('''
+import augment 'a.dart';
+''');
+    checkElementText(library, r'''
+library
+  augmentationImports
+    package:test/a.dart
+      definingUnit
+        classes
+          notSimplyBounded class C @35
+            typeParameters
+              covariant T @37
+                bound: C<dynamic>
+                defaultType: dynamic
+            constructors
+              synthetic @-1
+  definingUnit
+''');
+  }
+
   test_augmentation_documented() async {
     newFile('$testPackageLibPath/a.dart', r'''
 /// My documentation.
@@ -96,6 +263,138 @@
 ''');
   }
 
+  test_augmentation_importScope_constant() async {
+    newFile('$testPackageLibPath/a.dart', r'''
+final a = 0;
+''');
+
+    newFile('$testPackageLibPath/b.dart', r'''
+library augment 'test.dart';
+import 'a.dart';
+const b = a;
+''');
+
+    final library = await buildLibrary(r'''
+import augment 'b.dart';
+''');
+
+    checkElementText(library, r'''
+library
+  augmentationImports
+    package:test/b.dart
+      imports
+        package:test/a.dart
+      definingUnit
+        topLevelVariables
+          static const b @52
+            type: int
+            constantInitializer
+              SimpleIdentifier
+                token: a @56
+                staticElement: package:test/a.dart::@getter::a
+                staticType: int
+        accessors
+          synthetic static get b @-1
+            returnType: int
+  definingUnit
+''');
+  }
+
+  test_augmentation_importScope_constant_field() async {
+    newFile('$testPackageLibPath/a.dart', r'''
+class A {
+  static const a = 0;
+}
+''');
+
+    newFile('$testPackageLibPath/b.dart', r'''
+library augment 'test.dart';
+import 'a.dart';
+const b = A.a;
+''');
+
+    final library = await buildLibrary(r'''
+import augment 'b.dart';
+''');
+
+    checkElementText(library, r'''
+library
+  augmentationImports
+    package:test/b.dart
+      imports
+        package:test/a.dart
+      definingUnit
+        topLevelVariables
+          static const b @52
+            type: int
+            constantInitializer
+              PrefixedIdentifier
+                prefix: SimpleIdentifier
+                  token: A @56
+                  staticElement: package:test/a.dart::@class::A
+                  staticType: null
+                period: . @57
+                identifier: SimpleIdentifier
+                  token: a @58
+                  staticElement: package:test/a.dart::@class::A::@getter::a
+                  staticType: int
+                staticElement: package:test/a.dart::@class::A::@getter::a
+                staticType: int
+        accessors
+          synthetic static get b @-1
+            returnType: int
+  definingUnit
+''');
+  }
+
+  test_augmentation_importScope_constant_instanceCreation() async {
+    newFile('$testPackageLibPath/a.dart', r'''
+class A {
+  const A {};
+}
+''');
+
+    newFile('$testPackageLibPath/b.dart', r'''
+library augment 'test.dart';
+import 'a.dart';
+const a = A();
+''');
+
+    final library = await buildLibrary(r'''
+import augment 'b.dart';
+''');
+
+    checkElementText(library, r'''
+library
+  augmentationImports
+    package:test/b.dart
+      imports
+        package:test/a.dart
+      definingUnit
+        topLevelVariables
+          static const a @52
+            type: A
+            constantInitializer
+              InstanceCreationExpression
+                constructorName: ConstructorName
+                  type: NamedType
+                    name: SimpleIdentifier
+                      token: A @56
+                      staticElement: package:test/a.dart::@class::A
+                      staticType: null
+                    type: A
+                  staticElement: package:test/a.dart::@class::A::@constructor::•
+                argumentList: ArgumentList
+                  leftParenthesis: ( @57
+                  rightParenthesis: ) @58
+                staticType: A
+        accessors
+          synthetic static get a @-1
+            returnType: A
+  definingUnit
+''');
+  }
+
   test_augmentation_importScope_topInference() async {
     newFile('$testPackageLibPath/a.dart', r'''
 final a = 0;
diff --git a/pkg/compiler/lib/src/dump_info.dart b/pkg/compiler/lib/src/dump_info.dart
index e5d7229..bc9c67a 100644
--- a/pkg/compiler/lib/src/dump_info.dart
+++ b/pkg/compiler/lib/src/dump_info.dart
@@ -14,6 +14,7 @@
 import 'package:dart2js_info/json_info_codec.dart';
 import 'package:dart2js_info/binary_serialization.dart' as dump_info;
 import 'package:kernel/ast.dart' as ir;
+import 'package:kernel/core_types.dart' as ir;
 
 import '../compiler_api.dart' as api;
 import 'common.dart';
@@ -184,11 +185,47 @@
     return classTypeInfo;
   }
 
+  /// Returns all immediately extended, implemented, or mixed-in types of
+  /// [clazz].
+  List<ClassEntity> getImmediateSupers(ClassEntity clazz) {
+    final superclass =
+        environment.getSuperClass(clazz, skipUnnamedMixinApplications: true);
+    // Ignore 'Object' to reduce overhead.
+    return [
+      if (superclass != null &&
+          superclass != closedWorld.commonElements.objectClass)
+        superclass,
+      ...closedWorld.dartTypes
+          .getInterfaces(clazz)
+          .map((i) => i.element)
+          .where((cls) => cls != null),
+    ];
+  }
+
   ClassInfo visitClass(ClassEntity clazz) {
-    // Omit class if it is not needed.
-    ClassInfo classInfo = ClassInfo(
+    // True if [info] can be safely removed from the output.
+    bool filterClassInfo(ClassInfo info) =>
+        !compiler.backendStrategy.emitterTask.neededClasses.contains(clazz) &&
+        info.fields.isEmpty &&
+        info.functions.isEmpty;
+
+    ClassInfo classInfo = state.entityToInfo[clazz];
+    if (classInfo != null) {
+      return filterClassInfo(classInfo) ? null : classInfo;
+    }
+    final supers = <ClassInfo>[];
+    getImmediateSupers(clazz).forEach((superInterface) {
+      final superclass =
+          environment.lookupClass(superInterface.library, superInterface.name);
+      if (superclass == null) return;
+      final classInfo = visitClass(superclass);
+      if (classInfo == null) return;
+      supers.add(classInfo);
+    });
+    classInfo = ClassInfo(
         name: clazz.name,
         isAbstract: clazz.isAbstract,
+        supers: supers,
         outputUnit: _unitInfoForClass(clazz));
     state.entityToInfo[clazz] = classInfo;
 
@@ -229,9 +266,7 @@
 
     classInfo.size = size;
 
-    if (!compiler.backendStrategy.emitterTask.neededClasses.contains(clazz) &&
-        classInfo.fields.isEmpty &&
-        classInfo.functions.isEmpty) {
+    if (filterClassInfo(classInfo)) {
       return null;
     }
 
@@ -417,11 +452,13 @@
   final JClosedWorld closedWorld;
   final DumpInfoTask dumpInfoTask;
   final state = DumpInfoStateData();
+  final ir.CoreTypes coreTypes;
 
   JElementEnvironment get environment => closedWorld.elementEnvironment;
 
   KernelInfoCollector(
-      this.component, this.compiler, this.dumpInfoTask, this.closedWorld);
+      this.component, this.compiler, this.dumpInfoTask, this.closedWorld)
+      : this.coreTypes = ir.CoreTypes(component);
 
   void run() {
     // TODO(markzipan): Add CFE constants to `state.info.constants`.
@@ -506,9 +543,29 @@
   }
 
   ClassInfo visitClass(ir.Class clazz, {ClassEntity classEntity}) {
-    // Omit class if it is not needed.
-    ClassInfo classInfo = ClassInfo(
-        name: clazz.name, isAbstract: clazz.isAbstract, outputUnit: null);
+    if (state.entityToInfo[classEntity] != null)
+      return state.entityToInfo[classEntity];
+
+    final supers = <ClassInfo>[];
+    clazz.supers.forEach((supertype) {
+      final superclass = supertype.classNode;
+      // Ignore 'Object' to reduce overhead.
+      if (superclass == coreTypes.objectClass) {
+        return;
+      }
+      final superclassLibrary =
+          environment.lookupLibrary(superclass.enclosingLibrary.importUri);
+      final superclassEntity =
+          environment.lookupClass(superclassLibrary, superclass.name);
+      if (superclassEntity == null) return;
+      ClassInfo classInfo =
+          visitClass(superclass, classEntity: superclassEntity);
+      if (classInfo != null) supers.add(classInfo);
+    });
+
+    ClassInfo classInfo = ClassInfo.fromKernel(
+        name: clazz.name, isAbstract: clazz.isAbstract, supers: supers);
+    state.entityToInfo[classEntity] = classInfo;
 
     clazz.members.forEach((ir.Member member) {
       final isSetter = member is ir.Procedure && member.isSetter;
@@ -861,6 +918,17 @@
     final kClassInfo = kClassInfos.first;
     kernelInfo.state.entityToInfo[clazz] = kClassInfo;
 
+    /// Add synthetically injected superclasses like `Interceptor` and
+    /// `LegacyJavaScriptObject`.
+    final syntheticSuperclass = closedWorld.commonElements
+        .getDefaultSuperclass(clazz, closedWorld.nativeData);
+    if (syntheticSuperclass != closedWorld.commonElements.objectClass) {
+      final classInfo = kernelInfo.state.entityToInfo[syntheticSuperclass];
+      if (classInfo != null) {
+        kClassInfo.supers.add(classInfo);
+      }
+    }
+
     int size = dumpInfoTask.sizeOf(clazz);
     final disambiguatedMemberName = '$parentName/${clazz.name}';
     environment.forEachLocalClassMember(clazz, (member) {
@@ -1647,9 +1715,11 @@
   visitClass(ClassInfo info) {
     info.functions = filterDeadInfo<FunctionInfo>(info.functions);
     info.fields = filterDeadInfo<FieldInfo>(info.fields);
+    info.supers = filterDeadInfo<ClassInfo>(info.supers);
 
     info.functions.forEach(visitFunction);
     info.fields.forEach(visitField);
+    info.supers.forEach(visitClass);
   }
 
   @override
@@ -1684,6 +1754,7 @@
 
 /// Returns a fully resolved name for [info] for disambiguation.
 String fullyResolvedNameForInfo(BasicInfo info) {
+  if (info == null) return '';
   var name = info.name;
   var currentInfo = info;
   while (currentInfo.parent != null) {
diff --git a/pkg/compiler/test/analyses/dart2js_allowed.json b/pkg/compiler/test/analyses/dart2js_allowed.json
index 746d0ef..ad4ddfd 100644
--- a/pkg/compiler/test/analyses/dart2js_allowed.json
+++ b/pkg/compiler/test/analyses/dart2js_allowed.json
@@ -87,7 +87,7 @@
     "Dynamic invocation of '[]'.": 12,
     "Dynamic invocation of 'compareTo'.": 1,
     "Dynamic invocation of 'forEach'.": 2,
-    "Dynamic invocation of 'map'.": 2
+    "Dynamic invocation of 'map'.": 3
   },
   "pkg/dart2js_info/lib/src/binary/sink.dart": {
     "Dynamic access of 'index'.": 1
diff --git a/pkg/compiler/test/dump_info/data/closures.dart b/pkg/compiler/test/dump_info/data/closures.dart
index 817e514..f9a7434 100644
--- a/pkg/compiler/test/dump_info/data/closures.dart
+++ b/pkg/compiler/test/dump_info/data/closures.dart
@@ -96,10 +96,11 @@
     "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod2",
     "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod3",
     "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4"
-  ]
+  ],
+  "supers": []
 }]*/
 class Class1<T> {
-  /*spec.member: Class1.field:
+  /*member: Class1.field:
    closure=[{
   "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.field.Class1_field_closure",
   "kind": "closure",
@@ -187,70 +188,6 @@
     {"id":"function/dart:_rti::findType","mask":null},
     {"id":"function/dart:_rti::instanceType","mask":null}]
   */
-  /*canary.member: Class1.field:
-   closure=[{
-  "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.field.Class1_field_closure",
-  "kind": "closure",
-  "name": "Class1_field_closure",
-  "size": 242,
-  "outputUnit": "outputUnit/main",
-  "parent": "field/memory:sdk/tests/web/native/main.dart::Class1.field",
-  "function": "function/memory:sdk/tests/web/native/main.dart::Class1.field.Class1_field_closure.call"
-}],
-   function=[{
-  "id": "field/memory:sdk/tests/web/native/main.dart::Class1.field",
-  "kind": "field",
-  "name": "field",
-  "size": 318,
-  "outputUnit": "outputUnit/main",
-  "parent": "class/memory:sdk/tests/web/native/main.dart::Class1",
-  "children": [
-    "closure/memory:sdk/tests/web/native/main.dart::Class1.field.Class1_field_closure"
-  ],
-  "inferredType": "[subclass=Closure]",
-  "code": "set$field(field) {\n      this.field = type$.Type_Function._as(field);\n    }",
-  "type": "Type Function()"
-}],
-   holding=[
-    {"id":"field/memory:sdk/tests/web/native/main.dart::Class1.field","mask":null},
-    {"id":"function/dart:_js_helper::throwCyclicInit","mask":null},
-    {"id":"function/dart:_late_helper::throwLateFieldADI","mask":null},
-    {"id":"function/dart:_rti::Rti._bind","mask":null},
-    {"id":"function/dart:_rti::Rti._eval","mask":null},
-    {"id":"function/dart:_rti::_arrayInstanceType","mask":null},
-    {"id":"function/dart:_rti::_asBool","mask":null},
-    {"id":"function/dart:_rti::_asBoolQ","mask":null},
-    {"id":"function/dart:_rti::_asBoolS","mask":null},
-    {"id":"function/dart:_rti::_asDouble","mask":null},
-    {"id":"function/dart:_rti::_asDoubleQ","mask":null},
-    {"id":"function/dart:_rti::_asDoubleS","mask":null},
-    {"id":"function/dart:_rti::_asInt","mask":null},
-    {"id":"function/dart:_rti::_asIntQ","mask":null},
-    {"id":"function/dart:_rti::_asIntS","mask":null},
-    {"id":"function/dart:_rti::_asNum","mask":null},
-    {"id":"function/dart:_rti::_asNumQ","mask":null},
-    {"id":"function/dart:_rti::_asNumS","mask":null},
-    {"id":"function/dart:_rti::_asObject","mask":null},
-    {"id":"function/dart:_rti::_asString","mask":null},
-    {"id":"function/dart:_rti::_asStringQ","mask":null},
-    {"id":"function/dart:_rti::_asStringS","mask":null},
-    {"id":"function/dart:_rti::_asTop","mask":null},
-    {"id":"function/dart:_rti::_generalAsCheckImplementation","mask":null},
-    {"id":"function/dart:_rti::_generalIsTestImplementation","mask":null},
-    {"id":"function/dart:_rti::_generalNullableAsCheckImplementation","mask":null},
-    {"id":"function/dart:_rti::_generalNullableIsTestImplementation","mask":null},
-    {"id":"function/dart:_rti::_installSpecializedAsCheck","mask":null},
-    {"id":"function/dart:_rti::_installSpecializedIsTest","mask":null},
-    {"id":"function/dart:_rti::_instanceType","mask":null},
-    {"id":"function/dart:_rti::_isBool","mask":null},
-    {"id":"function/dart:_rti::_isInt","mask":null},
-    {"id":"function/dart:_rti::_isNum","mask":null},
-    {"id":"function/dart:_rti::_isObject","mask":null},
-    {"id":"function/dart:_rti::_isString","mask":null},
-    {"id":"function/dart:_rti::_isTop","mask":null},
-    {"id":"function/dart:_rti::findType","mask":null},
-    {"id":"function/dart:_rti::instanceType","mask":null}]
-  */
   var field = () => T;
   /*member: Class1.funcField:
    function=[{
@@ -272,7 +209,7 @@
   */
   var funcField;
 
-  /*spec.member: Class1.:
+  /*member: Class1.:
    closure=[{
   "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.Class1.Class1_closure",
   "kind": "closure",
@@ -337,47 +274,6 @@
     {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.field.Class1_field_closure.call","mask":null},
     {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.field.Class1_field_closure.call","mask":null}]
   */
-  /*canary.member: Class1.:
-   closure=[{
-  "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.Class1.Class1_closure",
-  "kind": "closure",
-  "name": "Class1_closure",
-  "size": 204,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::Class1.Class1",
-  "function": "function/memory:sdk/tests/web/native/main.dart::Class1.Class1.Class1_closure.call"
-}],
-   function=[{
-  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.Class1",
-  "kind": "function",
-  "name": "Class1",
-  "size": 355,
-  "outputUnit": "outputUnit/main",
-  "parent": "class/memory:sdk/tests/web/native/main.dart::Class1",
-  "children": [
-    "closure/memory:sdk/tests/web/native/main.dart::Class1.Class1.Class1_closure"
-  ],
-  "modifiers": {
-    "static": false,
-    "const": false,
-    "factory": false,
-    "external": false
-  },
-  "returnType": "dynamic",
-  "inferredReturnType": "[exact=Class1]",
-  "parameters": [],
-  "sideEffects": "SideEffects(reads nothing; writes field)",
-  "inlinedCount": 0,
-  "code": "Class1$($T) {\n      var t1 = new A.Class1(new A.Class1_field_closure($T), null, $T._eval$1(\"Class1<0>\"));\n      t1.Class1$0($T);\n      return t1;\n    }",
-  "type": "dynamic Function()",
-  "functionKind": 3
-}],
-   holding=[
-    {"id":"function/dart:_rti::Rti._eval","mask":null},
-    {"id":"function/dart:_rti::_setArrayType","mask":null},
-    {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.field.Class1_field_closure.call","mask":null},
-    {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.field.Class1_field_closure.call","mask":null}]
-  */
   Class1() {
     field = () => T;
   }
@@ -443,7 +339,7 @@
   "functionKind": 3
 }]*/
   factory Class1.fact() => new Class1<T>();
-  /*spec.member: Class1.fact2:
+  /*member: Class1.fact2:
    closure=[{
   "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.Class1.fact2.Class1_Class1$fact2_closure",
   "kind": "closure",
@@ -508,47 +404,6 @@
     {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.Class1.fact2.Class1_Class1$fact2_closure.call","mask":null},
     {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.Class1.setFunc","mask":null}]
   */
-  /*canary.member: Class1.fact2:
-   closure=[{
-  "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.Class1.fact2.Class1_Class1$fact2_closure",
-  "kind": "closure",
-  "name": "Class1_Class1$fact2_closure",
-  "size": 314,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::Class1.Class1.fact2",
-  "function": "function/memory:sdk/tests/web/native/main.dart::Class1.Class1.fact2.Class1_Class1$fact2_closure.call"
-}],
-   function=[{
-  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.Class1.fact2",
-  "kind": "function",
-  "name": "Class1.fact2",
-  "size": 419,
-  "outputUnit": "outputUnit/main",
-  "parent": "class/memory:sdk/tests/web/native/main.dart::Class1",
-  "children": [
-    "closure/memory:sdk/tests/web/native/main.dart::Class1.Class1.fact2.Class1_Class1$fact2_closure"
-  ],
-  "modifiers": {
-    "static": false,
-    "const": false,
-    "factory": true,
-    "external": false
-  },
-  "returnType": "Class1<#Afree>",
-  "inferredReturnType": "[exact=Class1]",
-  "parameters": [],
-  "sideEffects": "SideEffects(reads nothing; writes nothing)",
-  "inlinedCount": 0,
-  "code": "Class1_Class1$fact2($T) {\n      return A.Class1$setFunc(new A.Class1_Class1$fact2_closure($T), $T);\n    }",
-  "type": "Class1<#A> Function<#A extends Object?>()",
-  "functionKind": 3
-}],
-   holding=[
-    {"id":"function/dart:_rti::_setArrayType","mask":null},
-    {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.Class1.fact2.Class1_Class1$fact2_closure.call","mask":null},
-    {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.Class1.fact2.Class1_Class1$fact2_closure.call","mask":null},
-    {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.Class1.setFunc","mask":null}]
-  */
   factory Class1.fact2() => new Class1.setFunc(() => new Set<T>());
 
   /*member: Class1.method1:function=[{
@@ -575,7 +430,7 @@
   "functionKind": 2
 }]*/
   method1() => T;
-  /*spec.member: Class1.method2:
+  /*member: Class1.method2:
    closure=[{
   "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.method2.Class1_method2_closure",
   "kind": "closure",
@@ -639,46 +494,6 @@
     {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.method2.Class1_method2_closure.call","mask":null},
     {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.method2.Class1_method2_closure.call","mask":null}]
   */
-  /*canary.member: Class1.method2:
-   closure=[{
-  "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.method2.Class1_method2_closure",
-  "kind": "closure",
-  "name": "Class1_method2_closure",
-  "size": 262,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::Class1.method2",
-  "function": "function/memory:sdk/tests/web/native/main.dart::Class1.method2.Class1_method2_closure.call"
-}],
-   function=[{
-  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.method2",
-  "kind": "function",
-  "name": "method2",
-  "size": 330,
-  "outputUnit": "outputUnit/main",
-  "parent": "class/memory:sdk/tests/web/native/main.dart::Class1",
-  "children": [
-    "closure/memory:sdk/tests/web/native/main.dart::Class1.method2.Class1_method2_closure"
-  ],
-  "modifiers": {
-    "static": false,
-    "const": false,
-    "factory": false,
-    "external": false
-  },
-  "returnType": "dynamic",
-  "inferredReturnType": "[subclass=Closure]",
-  "parameters": [],
-  "sideEffects": "SideEffects(reads nothing; writes nothing)",
-  "inlinedCount": 0,
-  "code": "method2$0() {\n      return new A.Class1_method2_closure(this);\n    }",
-  "type": "dynamic Function()",
-  "functionKind": 2
-}],
-   holding=[
-    {"id":"function/dart:_rti::_setArrayType","mask":null},
-    {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.method2.Class1_method2_closure.call","mask":null},
-    {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.method2.Class1_method2_closure.call","mask":null}]
-  */
   method2() {
     return () => T;
   }
@@ -707,7 +522,7 @@
   "functionKind": 2
 }]*/
   method3<S>() => S;
-  /*spec.member: Class1.method4:
+  /*member: Class1.method4:
    closure=[{
   "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.method4.Class1_method4_closure",
   "kind": "closure",
@@ -771,51 +586,11 @@
     {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.method4.Class1_method4_closure.call","mask":null},
     {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.method4.Class1_method4_closure.call","mask":null}]
   */
-  /*canary.member: Class1.method4:
-   closure=[{
-  "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.method4.Class1_method4_closure",
-  "kind": "closure",
-  "name": "Class1_method4_closure",
-  "size": 236,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::Class1.method4",
-  "function": "function/memory:sdk/tests/web/native/main.dart::Class1.method4.Class1_method4_closure.call"
-}],
-   function=[{
-  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.method4",
-  "kind": "function",
-  "name": "method4",
-  "size": 306,
-  "outputUnit": "outputUnit/main",
-  "parent": "class/memory:sdk/tests/web/native/main.dart::Class1",
-  "children": [
-    "closure/memory:sdk/tests/web/native/main.dart::Class1.method4.Class1_method4_closure"
-  ],
-  "modifiers": {
-    "static": false,
-    "const": false,
-    "factory": false,
-    "external": false
-  },
-  "returnType": "dynamic",
-  "inferredReturnType": "[subclass=Closure]",
-  "parameters": [],
-  "sideEffects": "SideEffects(reads nothing; writes nothing)",
-  "inlinedCount": 0,
-  "code": "method4$1$0($S) {\n      return new A.Class1_method4_closure($S);\n    }",
-  "type": "dynamic Function<#A extends Object?>()",
-  "functionKind": 2
-}],
-   holding=[
-    {"id":"function/dart:_rti::_setArrayType","mask":null},
-    {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.method4.Class1_method4_closure.call","mask":null},
-    {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.method4.Class1_method4_closure.call","mask":null}]
-  */
   method4<S>() {
     return () => S;
   }
 
-  /*spec.member: Class1.method5:
+  /*member: Class1.method5:
    closure=[
     {
   "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.method5.Class1_method5_local",
@@ -914,58 +689,6 @@
     {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.method5.Class1_method5_local.call","mask":null},
     {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.method5.Class1_method5_local.call","mask":null}]
   */
-  /*canary.member: Class1.method5:
-   closure=[
-    {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.method5.Class1_method5_local",
-  "kind": "closure",
-  "name": "Class1_method5_local",
-  "size": 287,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::Class1.method5",
-  "function": "function/memory:sdk/tests/web/native/main.dart::Class1.method5.Class1_method5_local.call"
-},
-    {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.method5.Class1_method5_local_closure",
-  "kind": "closure",
-  "name": "Class1_method5_local_closure",
-  "size": 260,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::Class1.method5",
-  "function": "function/memory:sdk/tests/web/native/main.dart::Class1.method5.Class1_method5_local_closure.call"
-}],
-   function=[{
-  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.method5",
-  "kind": "function",
-  "name": "method5",
-  "size": 632,
-  "outputUnit": "outputUnit/main",
-  "parent": "class/memory:sdk/tests/web/native/main.dart::Class1",
-  "children": [
-    "closure/memory:sdk/tests/web/native/main.dart::Class1.method5.Class1_method5_local",
-    "closure/memory:sdk/tests/web/native/main.dart::Class1.method5.Class1_method5_local_closure"
-  ],
-  "modifiers": {
-    "static": false,
-    "const": false,
-    "factory": false,
-    "external": false
-  },
-  "returnType": "dynamic",
-  "inferredReturnType": "[subclass=Closure]",
-  "parameters": [],
-  "sideEffects": "SideEffects(reads nothing; writes nothing)",
-  "inlinedCount": 0,
-  "code": "method5$0() {\n      return new A.Class1_method5_local().call$1$0(type$.double);\n    }",
-  "type": "dynamic Function()",
-  "functionKind": 2
-}],
-   holding=[
-    {"id":"function/dart:_rti::_setArrayType","mask":null},
-    {"id":"function/dart:_rti::findType","mask":null},
-    {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.method5.Class1_method5_local.call","mask":null},
-    {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.method5.Class1_method5_local.call","mask":null}]
-  */
   method5() {
     local<S>() {
       return () => S;
@@ -974,7 +697,7 @@
     return local<double>();
   }
 
-  /*spec.member: Class1.method6:
+  /*member: Class1.method6:
    closure=[
     {
   "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6__closure",
@@ -1147,80 +870,6 @@
     {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6_local.call","mask":null},
     {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6_local.call","mask":null}]
   */
-  /*canary.member: Class1.method6:
-   closure=[
-    {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6__closure",
-  "kind": "closure",
-  "name": "Class1_method6__closure",
-  "size": 415,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::Class1.method6",
-  "function": "function/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6__closure.call"
-},
-    {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6_closure",
-  "kind": "closure",
-  "name": "Class1_method6_closure",
-  "size": 363,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::Class1.method6",
-  "function": "function/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6_closure.call"
-},
-    {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6_local",
-  "kind": "closure",
-  "name": "Class1_method6_local",
-  "size": 316,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::Class1.method6",
-  "function": "function/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6_local.call"
-},
-    {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6_local_closure",
-  "kind": "closure",
-  "name": "Class1_method6_local_closure",
-  "size": 341,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::Class1.method6",
-  "function": "function/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6_local_closure.call"
-}],
-   function=[{
-  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.method6",
-  "kind": "function",
-  "name": "method6",
-  "size": 1573,
-  "outputUnit": "outputUnit/main",
-  "parent": "class/memory:sdk/tests/web/native/main.dart::Class1",
-  "children": [
-    "closure/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6__closure",
-    "closure/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6_closure",
-    "closure/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6_local",
-    "closure/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6_local_closure"
-  ],
-  "modifiers": {
-    "static": false,
-    "const": false,
-    "factory": false,
-    "external": false
-  },
-  "returnType": "dynamic",
-  "inferredReturnType": "[subclass=Closure]",
-  "parameters": [],
-  "sideEffects": "SideEffects(reads anything; writes anything)",
-  "inlinedCount": 0,
-  "code": "method6$1$0($S) {\n      return new A.Class1_method6_closure(this, $S).call$1(new A.Class1_method6_local($S).call$1$0(type$.double));\n    }",
-  "type": "dynamic Function<#A extends Object?>()",
-  "functionKind": 2
-}],
-   holding=[
-    {"id":"function/dart:_rti::_setArrayType","mask":null},
-    {"id":"function/dart:_rti::findType","mask":null},
-    {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6_closure.call","mask":null},
-    {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6_closure.call","mask":null},
-    {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6_local.call","mask":null},
-    {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6_local.call","mask":null}]
-  */
   method6<S>() {
     local<U>() {
       return () => '$S$U';
@@ -1256,7 +905,7 @@
   "functionKind": 0
 }]*/
   static staticMethod1<S>() => S;
-  /*spec.member: Class1.staticMethod2:
+  /*member: Class1.staticMethod2:
    closure=[{
   "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod2.Class1_staticMethod2_closure",
   "kind": "closure",
@@ -1320,51 +969,11 @@
     {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod2.Class1_staticMethod2_closure.call","mask":null},
     {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod2.Class1_staticMethod2_closure.call","mask":null}]
   */
-  /*canary.member: Class1.staticMethod2:
-   closure=[{
-  "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod2.Class1_staticMethod2_closure",
-  "kind": "closure",
-  "name": "Class1_staticMethod2_closure",
-  "size": 260,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod2",
-  "function": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod2.Class1_staticMethod2_closure.call"
-}],
-   function=[{
-  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod2",
-  "kind": "function",
-  "name": "staticMethod2",
-  "size": 345,
-  "outputUnit": "outputUnit/main",
-  "parent": "class/memory:sdk/tests/web/native/main.dart::Class1",
-  "children": [
-    "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod2.Class1_staticMethod2_closure"
-  ],
-  "modifiers": {
-    "static": true,
-    "const": false,
-    "factory": false,
-    "external": false
-  },
-  "returnType": "dynamic",
-  "inferredReturnType": "[subclass=Closure]",
-  "parameters": [],
-  "sideEffects": "SideEffects(reads nothing; writes nothing)",
-  "inlinedCount": 0,
-  "code": "Class1_staticMethod2($S) {\n      return new A.Class1_staticMethod2_closure($S);\n    }",
-  "type": "dynamic Function<#A extends Object?>()",
-  "functionKind": 0
-}],
-   holding=[
-    {"id":"function/dart:_rti::_setArrayType","mask":null},
-    {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod2.Class1_staticMethod2_closure.call","mask":null},
-    {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod2.Class1_staticMethod2_closure.call","mask":null}]
-  */
   static staticMethod2<S>() {
     return () => S;
   }
 
-  /*spec.member: Class1.staticMethod3:
+  /*member: Class1.staticMethod3:
    closure=[
     {
   "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod3.Class1_staticMethod3_local",
@@ -1463,58 +1072,6 @@
     {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod3.Class1_staticMethod3_local.call","mask":null},
     {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod3.Class1_staticMethod3_local.call","mask":null}]
   */
-  /*canary.member: Class1.staticMethod3:
-   closure=[
-    {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod3.Class1_staticMethod3_local",
-  "kind": "closure",
-  "name": "Class1_staticMethod3_local",
-  "size": 317,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod3",
-  "function": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod3.Class1_staticMethod3_local.call"
-},
-    {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod3.Class1_staticMethod3_local_closure",
-  "kind": "closure",
-  "name": "Class1_staticMethod3_local_closure",
-  "size": 284,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod3",
-  "function": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod3.Class1_staticMethod3_local_closure.call"
-}],
-   function=[{
-  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod3",
-  "kind": "function",
-  "name": "staticMethod3",
-  "size": 703,
-  "outputUnit": "outputUnit/main",
-  "parent": "class/memory:sdk/tests/web/native/main.dart::Class1",
-  "children": [
-    "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod3.Class1_staticMethod3_local",
-    "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod3.Class1_staticMethod3_local_closure"
-  ],
-  "modifiers": {
-    "static": true,
-    "const": false,
-    "factory": false,
-    "external": false
-  },
-  "returnType": "dynamic",
-  "inferredReturnType": "[subclass=Closure]",
-  "parameters": [],
-  "sideEffects": "SideEffects(reads nothing; writes nothing)",
-  "inlinedCount": 0,
-  "code": "Class1_staticMethod3() {\n      return new A.Class1_staticMethod3_local().call$1$0(type$.double);\n    }",
-  "type": "dynamic Function()",
-  "functionKind": 0
-}],
-   holding=[
-    {"id":"function/dart:_rti::_setArrayType","mask":null},
-    {"id":"function/dart:_rti::findType","mask":null},
-    {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod3.Class1_staticMethod3_local.call","mask":null},
-    {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod3.Class1_staticMethod3_local.call","mask":null}]
-  */
   static staticMethod3() {
     local<S>() {
       return () => S;
@@ -1523,7 +1080,7 @@
     return local<double>();
   }
 
-  /*spec.member: Class1.staticMethod4:
+  /*member: Class1.staticMethod4:
    closure=[
     {
   "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4__closure",
@@ -1696,80 +1253,6 @@
     {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4_local.call","mask":null},
     {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4_local.call","mask":null}]
   */
-  /*canary.member: Class1.staticMethod4:
-   closure=[
-    {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4__closure",
-  "kind": "closure",
-  "name": "Class1_staticMethod4__closure",
-  "size": 322,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4",
-  "function": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4__closure.call"
-},
-    {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4_closure",
-  "kind": "closure",
-  "name": "Class1_staticMethod4_closure",
-  "size": 328,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4",
-  "function": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4_closure.call"
-},
-    {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4_local",
-  "kind": "closure",
-  "name": "Class1_staticMethod4_local",
-  "size": 346,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4",
-  "function": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4_local.call"
-},
-    {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4_local_closure",
-  "kind": "closure",
-  "name": "Class1_staticMethod4_local_closure",
-  "size": 365,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4",
-  "function": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4_local_closure.call"
-}],
-   function=[{
-  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4",
-  "kind": "function",
-  "name": "staticMethod4",
-  "size": 1514,
-  "outputUnit": "outputUnit/main",
-  "parent": "class/memory:sdk/tests/web/native/main.dart::Class1",
-  "children": [
-    "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4__closure",
-    "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4_closure",
-    "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4_local",
-    "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4_local_closure"
-  ],
-  "modifiers": {
-    "static": true,
-    "const": false,
-    "factory": false,
-    "external": false
-  },
-  "returnType": "dynamic",
-  "inferredReturnType": "[subclass=Closure]",
-  "parameters": [],
-  "sideEffects": "SideEffects(reads anything; writes anything)",
-  "inlinedCount": 0,
-  "code": "Class1_staticMethod4($S) {\n      return new A.Class1_staticMethod4_closure($S).call$1(new A.Class1_staticMethod4_local($S).call$1$0(type$.double));\n    }",
-  "type": "dynamic Function<#A extends Object?>()",
-  "functionKind": 0
-}],
-   holding=[
-    {"id":"function/dart:_rti::_setArrayType","mask":null},
-    {"id":"function/dart:_rti::findType","mask":null},
-    {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4_closure.call","mask":null},
-    {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4_closure.call","mask":null},
-    {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4_local.call","mask":null},
-    {"id":"function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4_local.call","mask":null}]
-  */
   static staticMethod4<S>() {
     local<U>() {
       return () => '$S$U';
@@ -1807,7 +1290,7 @@
 }]*/
 topLevelMethod1<S>() => S;
 
-/*spec.member: topLevelMethod2:
+/*member: topLevelMethod2:
  closure=[{
   "id": "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod2.topLevelMethod2_closure",
   "kind": "closure",
@@ -1871,51 +1354,11 @@
   {"id":"function/memory:sdk/tests/web/native/main.dart::topLevelMethod2.topLevelMethod2_closure.call","mask":null},
   {"id":"function/memory:sdk/tests/web/native/main.dart::topLevelMethod2.topLevelMethod2_closure.call","mask":null}]
 */
-/*canary.member: topLevelMethod2:
- closure=[{
-  "id": "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod2.topLevelMethod2_closure",
-  "kind": "closure",
-  "name": "topLevelMethod2_closure",
-  "size": 240,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod2",
-  "function": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod2.topLevelMethod2_closure.call"
-}],
- function=[{
-  "id": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod2",
-  "kind": "function",
-  "name": "topLevelMethod2",
-  "size": 315,
-  "outputUnit": "outputUnit/main",
-  "parent": "library/memory:sdk/tests/web/native/main.dart::",
-  "children": [
-    "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod2.topLevelMethod2_closure"
-  ],
-  "modifiers": {
-    "static": false,
-    "const": false,
-    "factory": false,
-    "external": false
-  },
-  "returnType": "dynamic",
-  "inferredReturnType": "[subclass=Closure]",
-  "parameters": [],
-  "sideEffects": "SideEffects(reads nothing; writes nothing)",
-  "inlinedCount": 0,
-  "code": "topLevelMethod2($S) {\n      return new A.topLevelMethod2_closure($S);\n    }",
-  "type": "dynamic Function<#A extends Object?>()",
-  "functionKind": 0
-}],
- holding=[
-  {"id":"function/dart:_rti::_setArrayType","mask":null},
-  {"id":"function/memory:sdk/tests/web/native/main.dart::topLevelMethod2.topLevelMethod2_closure.call","mask":null},
-  {"id":"function/memory:sdk/tests/web/native/main.dart::topLevelMethod2.topLevelMethod2_closure.call","mask":null}]
-*/
 topLevelMethod2<S>() {
   return () => S;
 }
 
-/*spec.member: topLevelMethod3:
+/*member: topLevelMethod3:
  closure=[
   {
   "id": "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod3.topLevelMethod3_local",
@@ -2014,58 +1457,6 @@
   {"id":"function/memory:sdk/tests/web/native/main.dart::topLevelMethod3.topLevelMethod3_local.call","mask":null},
   {"id":"function/memory:sdk/tests/web/native/main.dart::topLevelMethod3.topLevelMethod3_local.call","mask":null}]
 */
-/*canary.member: topLevelMethod3:
- closure=[
-  {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod3.topLevelMethod3_local",
-  "kind": "closure",
-  "name": "topLevelMethod3_local",
-  "size": 292,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod3",
-  "function": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod3.topLevelMethod3_local.call"
-},
-  {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod3.topLevelMethod3_local_closure",
-  "kind": "closure",
-  "name": "topLevelMethod3_local_closure",
-  "size": 264,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod3",
-  "function": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod3.topLevelMethod3_local_closure.call"
-}],
- function=[{
-  "id": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod3",
-  "kind": "function",
-  "name": "topLevelMethod3",
-  "size": 648,
-  "outputUnit": "outputUnit/main",
-  "parent": "library/memory:sdk/tests/web/native/main.dart::",
-  "children": [
-    "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod3.topLevelMethod3_local",
-    "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod3.topLevelMethod3_local_closure"
-  ],
-  "modifiers": {
-    "static": false,
-    "const": false,
-    "factory": false,
-    "external": false
-  },
-  "returnType": "dynamic",
-  "inferredReturnType": "[subclass=Closure]",
-  "parameters": [],
-  "sideEffects": "SideEffects(reads nothing; writes nothing)",
-  "inlinedCount": 0,
-  "code": "topLevelMethod3() {\n      return new A.topLevelMethod3_local().call$1$0(type$.double);\n    }",
-  "type": "dynamic Function()",
-  "functionKind": 0
-}],
- holding=[
-  {"id":"function/dart:_rti::_setArrayType","mask":null},
-  {"id":"function/dart:_rti::findType","mask":null},
-  {"id":"function/memory:sdk/tests/web/native/main.dart::topLevelMethod3.topLevelMethod3_local.call","mask":null},
-  {"id":"function/memory:sdk/tests/web/native/main.dart::topLevelMethod3.topLevelMethod3_local.call","mask":null}]
-*/
 topLevelMethod3() {
   local<S>() {
     return () => S;
@@ -2074,7 +1465,7 @@
   return local<double>();
 }
 
-/*spec.member: topLevelMethod4:
+/*member: topLevelMethod4:
  closure=[
   {
   "id": "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4__closure",
@@ -2247,80 +1638,6 @@
   {"id":"function/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4_local.call","mask":null},
   {"id":"function/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4_local.call","mask":null}]
 */
-/*canary.member: topLevelMethod4:
- closure=[
-  {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4__closure",
-  "kind": "closure",
-  "name": "topLevelMethod4__closure",
-  "size": 302,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod4",
-  "function": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4__closure.call"
-},
-  {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4_closure",
-  "kind": "closure",
-  "name": "topLevelMethod4_closure",
-  "size": 303,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod4",
-  "function": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4_closure.call"
-},
-  {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4_local",
-  "kind": "closure",
-  "name": "topLevelMethod4_local",
-  "size": 321,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod4",
-  "function": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4_local.call"
-},
-  {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4_local_closure",
-  "kind": "closure",
-  "name": "topLevelMethod4_local_closure",
-  "size": 345,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod4",
-  "function": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4_local_closure.call"
-}],
- function=[{
-  "id": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod4",
-  "kind": "function",
-  "name": "topLevelMethod4",
-  "size": 1409,
-  "outputUnit": "outputUnit/main",
-  "parent": "library/memory:sdk/tests/web/native/main.dart::",
-  "children": [
-    "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4__closure",
-    "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4_closure",
-    "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4_local",
-    "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4_local_closure"
-  ],
-  "modifiers": {
-    "static": false,
-    "const": false,
-    "factory": false,
-    "external": false
-  },
-  "returnType": "dynamic",
-  "inferredReturnType": "[subclass=Closure]",
-  "parameters": [],
-  "sideEffects": "SideEffects(reads anything; writes anything)",
-  "inlinedCount": 0,
-  "code": "topLevelMethod4($S) {\n      return new A.topLevelMethod4_closure($S).call$1(new A.topLevelMethod4_local($S).call$1$0(type$.double));\n    }",
-  "type": "dynamic Function<#A extends Object?>()",
-  "functionKind": 0
-}],
- holding=[
-  {"id":"function/dart:_rti::_setArrayType","mask":null},
-  {"id":"function/dart:_rti::findType","mask":null},
-  {"id":"function/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4_closure.call","mask":null},
-  {"id":"function/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4_closure.call","mask":null},
-  {"id":"function/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4_local.call","mask":null},
-  {"id":"function/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4_local.call","mask":null}]
-*/
 topLevelMethod4<S>() {
   local<U>() {
     return () => '$S$U';
@@ -2332,7 +1649,7 @@
   return local2(local<double>());
 }
 
-/*spec.member: twoLocals:
+/*member: twoLocals:
  closure=[
   {
   "id": "closure/memory:sdk/tests/web/native/main.dart::twoLocals.twoLocals_local1",
@@ -2432,66 +1749,13 @@
   {"id":"function/memory:sdk/tests/web/native/main.dart::twoLocals.twoLocals_local2.call","mask":null},
   {"id":"function/memory:sdk/tests/web/native/main.dart::twoLocals.twoLocals_local2.call","mask":null}]
 */
-/*canary.member: twoLocals:
- closure=[
-  {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::twoLocals.twoLocals_local1",
-  "kind": "closure",
-  "name": "twoLocals_local1",
-  "size": 149,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::twoLocals",
-  "function": "function/memory:sdk/tests/web/native/main.dart::twoLocals.twoLocals_local1.call"
-},
-  {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::twoLocals.twoLocals_local2",
-  "kind": "closure",
-  "name": "twoLocals_local2",
-  "size": 210,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::twoLocals",
-  "function": "function/memory:sdk/tests/web/native/main.dart::twoLocals.twoLocals_local2.call"
-}],
- function=[{
-  "id": "function/memory:sdk/tests/web/native/main.dart::twoLocals",
-  "kind": "function",
-  "name": "twoLocals",
-  "size": 441,
-  "outputUnit": "outputUnit/main",
-  "parent": "library/memory:sdk/tests/web/native/main.dart::",
-  "children": [
-    "closure/memory:sdk/tests/web/native/main.dart::twoLocals.twoLocals_local1",
-    "closure/memory:sdk/tests/web/native/main.dart::twoLocals.twoLocals_local2"
-  ],
-  "modifiers": {
-    "static": false,
-    "const": false,
-    "factory": false,
-    "external": false
-  },
-  "returnType": "dynamic",
-  "inferredReturnType": "[subclass=Closure]",
-  "parameters": [],
-  "sideEffects": "SideEffects(reads nothing; writes nothing)",
-  "inlinedCount": 0,
-  "code": "twoLocals() {\n      return new A.twoLocals_local2(new A.twoLocals_local1());\n    }",
-  "type": "dynamic Function()",
-  "functionKind": 0
-}],
- holding=[
-  {"id":"function/dart:_rti::_setArrayType","mask":null},
-  {"id":"function/memory:sdk/tests/web/native/main.dart::twoLocals.twoLocals_local1.call","mask":null},
-  {"id":"function/memory:sdk/tests/web/native/main.dart::twoLocals.twoLocals_local1.call","mask":null},
-  {"id":"function/memory:sdk/tests/web/native/main.dart::twoLocals.twoLocals_local2.call","mask":null},
-  {"id":"function/memory:sdk/tests/web/native/main.dart::twoLocals.twoLocals_local2.call","mask":null}]
-*/
 dynamic twoLocals() {
   local1() {}
   local2() => local1();
   return local2;
 }
 
-/*spec.member: nested:
+/*member: nested:
  closure=[
   {
   "id": "closure/memory:sdk/tests/web/native/main.dart::nested.nested_nested1",
@@ -2589,57 +1853,6 @@
   {"id":"function/memory:sdk/tests/web/native/main.dart::nested.nested_nested1.call","mask":null},
   {"id":"function/memory:sdk/tests/web/native/main.dart::nested.nested_nested1.call","mask":null}]
 */
-/*canary.member: nested:
- closure=[
-  {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::nested.nested_nested1",
-  "kind": "closure",
-  "name": "nested_nested1",
-  "size": 225,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::nested",
-  "function": "function/memory:sdk/tests/web/native/main.dart::nested.nested_nested1.call"
-},
-  {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::nested.nested_nested1_nested2",
-  "kind": "closure",
-  "name": "nested_nested1_nested2",
-  "size": 227,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::nested",
-  "function": "function/memory:sdk/tests/web/native/main.dart::nested.nested_nested1_nested2.call"
-}],
- function=[{
-  "id": "function/memory:sdk/tests/web/native/main.dart::nested",
-  "kind": "function",
-  "name": "nested",
-  "size": 568,
-  "outputUnit": "outputUnit/main",
-  "parent": "library/memory:sdk/tests/web/native/main.dart::",
-  "children": [
-    "closure/memory:sdk/tests/web/native/main.dart::nested.nested_nested1",
-    "closure/memory:sdk/tests/web/native/main.dart::nested.nested_nested1_nested2"
-  ],
-  "modifiers": {
-    "static": false,
-    "const": false,
-    "factory": false,
-    "external": false
-  },
-  "returnType": "dynamic",
-  "inferredReturnType": "[null]",
-  "parameters": [],
-  "sideEffects": "SideEffects(reads anything; writes anything)",
-  "inlinedCount": 0,
-  "code": "nested() {\n      var t1 = {};\n      t1.x = null;\n      new A.nested_nested1(t1).call$0();\n      t1.x.call$0();\n    }",
-  "type": "dynamic Function()",
-  "functionKind": 0
-}],
- holding=[
-  {"id":"function/dart:_rti::_setArrayType","mask":null},
-  {"id":"function/memory:sdk/tests/web/native/main.dart::nested.nested_nested1.call","mask":null},
-  {"id":"function/memory:sdk/tests/web/native/main.dart::nested.nested_nested1.call","mask":null}]
-*/
 dynamic nested() {
   dynamic x;
   nested1() {
@@ -2651,7 +1864,7 @@
   x();
 }
 
-/*spec.member: nested2:
+/*member: nested2:
  closure=[
   {
   "id": "closure/memory:sdk/tests/web/native/main.dart::nested2.nested2_local1",
@@ -2783,68 +1996,6 @@
   {"id":"function/memory:sdk/tests/web/native/main.dart::nested2.nested2_local1.call","mask":null},
   {"id":"function/memory:sdk/tests/web/native/main.dart::nested2.nested2_local1.call","mask":null}]
 */
-/*canary.member: nested2:
- closure=[
-  {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::nested2.nested2_local1",
-  "kind": "closure",
-  "name": "nested2_local1",
-  "size": 195,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::nested2",
-  "function": "function/memory:sdk/tests/web/native/main.dart::nested2.nested2_local1.call"
-},
-  {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::nested2.nested2_local1__closure",
-  "kind": "closure",
-  "name": "nested2_local1__closure",
-  "size": 193,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::nested2",
-  "function": "function/memory:sdk/tests/web/native/main.dart::nested2.nested2_local1__closure.call"
-},
-  {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::nested2.nested2_local1_closure",
-  "kind": "closure",
-  "name": "nested2_local1_closure",
-  "size": 311,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::nested2",
-  "function": "function/memory:sdk/tests/web/native/main.dart::nested2.nested2_local1_closure.call"
-}],
- function=[{
-  "id": "function/memory:sdk/tests/web/native/main.dart::nested2",
-  "kind": "function",
-  "name": "nested2",
-  "size": 764,
-  "outputUnit": "outputUnit/main",
-  "parent": "library/memory:sdk/tests/web/native/main.dart::",
-  "children": [
-    "closure/memory:sdk/tests/web/native/main.dart::nested2.nested2_local1",
-    "closure/memory:sdk/tests/web/native/main.dart::nested2.nested2_local1__closure",
-    "closure/memory:sdk/tests/web/native/main.dart::nested2.nested2_local1_closure"
-  ],
-  "modifiers": {
-    "static": false,
-    "const": false,
-    "factory": false,
-    "external": false
-  },
-  "returnType": "dynamic",
-  "inferredReturnType": "[null]",
-  "parameters": [],
-  "sideEffects": "SideEffects(reads anything; writes anything)",
-  "inlinedCount": 0,
-  "code": "nested2() {\n      A.print(new A.nested2_local1().call$0());\n    }",
-  "type": "dynamic Function()",
-  "functionKind": 0
-}],
- holding=[
-  {"id":"function/dart:_rti::_setArrayType","mask":null},
-  {"id":"function/dart:core::print","mask":null},
-  {"id":"function/memory:sdk/tests/web/native/main.dart::nested2.nested2_local1.call","mask":null},
-  {"id":"function/memory:sdk/tests/web/native/main.dart::nested2.nested2_local1.call","mask":null}]
-*/
 dynamic nested2() {
   dynamic y;
   int local1() {
@@ -2855,7 +2006,7 @@
   print(y);
 }
 
-/*spec.member: siblings:
+/*member: siblings:
  closure=[
   {
   "id": "closure/memory:sdk/tests/web/native/main.dart::siblings.siblings_local1",
@@ -2987,68 +2138,6 @@
   {"id":"function/memory:sdk/tests/web/native/main.dart::siblings.siblings_local1.call","mask":null},
   {"id":"function/memory:sdk/tests/web/native/main.dart::siblings.siblings_local1.call","mask":null}]
 */
-/*canary.member: siblings:
- closure=[
-  {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::siblings.siblings_local1",
-  "kind": "closure",
-  "name": "siblings_local1",
-  "size": 244,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::siblings",
-  "function": "function/memory:sdk/tests/web/native/main.dart::siblings.siblings_local1.call"
-},
-  {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::siblings.siblings_local1_closure",
-  "kind": "closure",
-  "name": "siblings_local1_closure",
-  "size": 193,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::siblings",
-  "function": "function/memory:sdk/tests/web/native/main.dart::siblings.siblings_local1_closure.call"
-},
-  {
-  "id": "closure/memory:sdk/tests/web/native/main.dart::siblings.siblings_local1_closure%0",
-  "kind": "closure",
-  "name": "siblings_local1_closure",
-  "size": 197,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::siblings",
-  "function": "function/memory:sdk/tests/web/native/main.dart::siblings.siblings_local1_closure.call%0"
-}],
- function=[{
-  "id": "function/memory:sdk/tests/web/native/main.dart::siblings",
-  "kind": "function",
-  "name": "siblings",
-  "size": 701,
-  "outputUnit": "outputUnit/main",
-  "parent": "library/memory:sdk/tests/web/native/main.dart::",
-  "children": [
-    "closure/memory:sdk/tests/web/native/main.dart::siblings.siblings_local1",
-    "closure/memory:sdk/tests/web/native/main.dart::siblings.siblings_local1_closure",
-    "closure/memory:sdk/tests/web/native/main.dart::siblings.siblings_local1_closure%0"
-  ],
-  "modifiers": {
-    "static": false,
-    "const": false,
-    "factory": false,
-    "external": false
-  },
-  "returnType": "dynamic",
-  "inferredReturnType": "[null]",
-  "parameters": [],
-  "sideEffects": "SideEffects(reads anything; writes anything)",
-  "inlinedCount": 0,
-  "code": "siblings() {\n      A.print(new A.siblings_local1().call$0());\n    }",
-  "type": "dynamic Function()",
-  "functionKind": 0
-}],
- holding=[
-  {"id":"function/dart:_rti::_setArrayType","mask":null},
-  {"id":"function/dart:core::print","mask":null},
-  {"id":"function/memory:sdk/tests/web/native/main.dart::siblings.siblings_local1.call","mask":null},
-  {"id":"function/memory:sdk/tests/web/native/main.dart::siblings.siblings_local1.call","mask":null}]
-*/
 dynamic siblings() {
   int local1() {
     int a = (() => 1)();
diff --git a/pkg/compiler/test/dump_info/data/deferred/main.dart b/pkg/compiler/test/dump_info/data/deferred/main.dart
index 2ab399c..95af0bd 100644
--- a/pkg/compiler/test/dump_info/data/deferred/main.dart
+++ b/pkg/compiler/test/dump_info/data/deferred/main.dart
@@ -121,7 +121,7 @@
 
 import 'lib.dart' deferred as lib;
 
-/*spec.member: main:
+/*member: main:
  closure=[{
   "id": "closure/memory:sdk/tests/web/native/main.dart::main.main_closure",
   "kind": "closure",
@@ -194,49 +194,6 @@
   {"id":"function/memory:sdk/tests/web/native/main.dart::main.main_closure.call","mask":null},
   {"id":"function/memory:sdk/tests/web/native/main.dart::main.main_closure.call","mask":null}]
 */
-/*canary.member: main:
- closure=[{
-  "id": "closure/memory:sdk/tests/web/native/main.dart::main.main_closure",
-  "kind": "closure",
-  "name": "main_closure",
-  "size": 201,
-  "outputUnit": "outputUnit/main",
-  "parent": "function/memory:sdk/tests/web/native/main.dart::main",
-  "function": "function/memory:sdk/tests/web/native/main.dart::main.main_closure.call"
-}],
- function=[{
-  "id": "function/memory:sdk/tests/web/native/main.dart::main",
-  "kind": "function",
-  "name": "main",
-  "size": 301,
-  "outputUnit": "outputUnit/main",
-  "parent": "library/memory:sdk/tests/web/native/main.dart::",
-  "children": [
-    "closure/memory:sdk/tests/web/native/main.dart::main.main_closure"
-  ],
-  "modifiers": {
-    "static": false,
-    "const": false,
-    "factory": false,
-    "external": false
-  },
-  "returnType": "dynamic",
-  "inferredReturnType": "[exact=_Future]",
-  "parameters": [],
-  "sideEffects": "SideEffects(reads anything; writes anything)",
-  "inlinedCount": 0,
-  "code": "main() {\n      return A.loadDeferredLibrary(\"lib\").then$1$1(new A.main_closure(), type$.Null);\n    }",
-  "type": "dynamic Function()",
-  "functionKind": 0
-}],
- holding=[
-  {"id":"function/dart:_js_helper::loadDeferredLibrary","mask":null},
-  {"id":"function/dart:_rti::_setArrayType","mask":null},
-  {"id":"function/dart:_rti::findType","mask":null},
-  {"id":"function/dart:async::_Future.then","mask":"[exact=_Future]"},
-  {"id":"function/memory:sdk/tests/web/native/main.dart::main.main_closure.call","mask":null},
-  {"id":"function/memory:sdk/tests/web/native/main.dart::main.main_closure.call","mask":null}]
-*/
 main() => lib.loadLibrary().then((_) {
       (lib.funky)();
     });
diff --git a/pkg/compiler/test/dump_info/data/deferred_future/lib2.dart b/pkg/compiler/test/dump_info/data/deferred_future/lib2.dart
index bfcfa23..6a9ec09 100644
--- a/pkg/compiler/test/dump_info/data/deferred_future/lib2.dart
+++ b/pkg/compiler/test/dump_info/data/deferred_future/lib2.dart
@@ -27,7 +27,8 @@
   },
   "children": [
     "function/memory:sdk/tests/web/native/lib2.dart::A.method"
-  ]
+  ],
+  "supers": []
 }]*/
 class A {
   const A();
diff --git a/pkg/compiler/test/dump_info/data/deferred_future/main.dart b/pkg/compiler/test/dump_info/data/deferred_future/main.dart
index ed843d7..e95b65c 100644
--- a/pkg/compiler/test/dump_info/data/deferred_future/main.dart
+++ b/pkg/compiler/test/dump_info/data/deferred_future/main.dart
@@ -2,130 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-/*spec.library: 
- constant=[
-  {
-  "id": "constant/B.C_A = new A.A();\n",
-  "kind": "constant",
-  "name": "",
-  "size": 19,
-  "outputUnit": "outputUnit/1",
-  "code": "B.C_A = new A.A();\n"
-},
-  {
-  "id": "constant/B.C_Deferred = B.C_A;\n",
-  "kind": "constant",
-  "name": "",
-  "size": 22,
-  "outputUnit": "outputUnit/1",
-  "code": "B.C_Deferred = B.C_A;\n"
-},
-  {
-  "id": "constant/B.C_JS_CONST = function getTagFallback(o) {\n  var s = Object.prototype.toString.call(o);\n  return s.substring(8, s.length - 1);\n};\n",
-  "kind": "constant",
-  "name": "",
-  "size": 131,
-  "outputUnit": "outputUnit/main",
-  "code": "B.C_JS_CONST = function getTagFallback(o) {\n  var s = Object.prototype.toString.call(o);\n  return s.substring(8, s.length - 1);\n};\n"
-},
-  {
-  "id": "constant/B.C__RootZone = new A._RootZone();\n",
-  "kind": "constant",
-  "name": "",
-  "size": 35,
-  "outputUnit": "outputUnit/main",
-  "code": "B.C__RootZone = new A._RootZone();\n"
-},
-  {
-  "id": "constant/B.C__StringStackTrace = new A._StringStackTrace();\n",
-  "kind": "constant",
-  "name": "",
-  "size": 51,
-  "outputUnit": "outputUnit/main",
-  "code": "B.C__StringStackTrace = new A._StringStackTrace();\n"
-},
-  {
-  "id": "constant/B.Interceptor_methods = J.Interceptor.prototype;\n",
-  "kind": "constant",
-  "name": "",
-  "size": 49,
-  "outputUnit": "outputUnit/main",
-  "code": "B.Interceptor_methods = J.Interceptor.prototype;\n"
-},
-  {
-  "id": "constant/B.JSArray_methods = J.JSArray.prototype;\n",
-  "kind": "constant",
-  "name": "",
-  "size": 41,
-  "outputUnit": "outputUnit/main",
-  "code": "B.JSArray_methods = J.JSArray.prototype;\n"
-},
-  {
-  "id": "constant/B.JSInt_methods = J.JSInt.prototype;\n",
-  "kind": "constant",
-  "name": "",
-  "size": 37,
-  "outputUnit": "outputUnit/main",
-  "code": "B.JSInt_methods = J.JSInt.prototype;\n"
-},
-  {
-  "id": "constant/B.JSString_methods = J.JSString.prototype;\n",
-  "kind": "constant",
-  "name": "",
-  "size": 43,
-  "outputUnit": "outputUnit/main",
-  "code": "B.JSString_methods = J.JSString.prototype;\n"
-},
-  {
-  "id": "constant/B.JavaScriptObject_methods = J.JavaScriptObject.prototype;\n",
-  "kind": "constant",
-  "name": "",
-  "size": 59,
-  "outputUnit": "outputUnit/main",
-  "code": "B.JavaScriptObject_methods = J.JavaScriptObject.prototype;\n"
-}],
- deferredFiles=[{
-  "main.dart": {
-    "name": "<unnamed>",
-    "imports": {
-      "lib1": [
-        "out_1.part.js"
-      ]
-    }
-  }
-}],
- dependencies=[{}],
- library=[{
-  "id": "library/memory:sdk/tests/web/native/main.dart::",
-  "kind": "library",
-  "name": "<unnamed>",
-  "size": 857,
-  "children": [
-    "function/memory:sdk/tests/web/native/main.dart::main"
-  ],
-  "canonicalUri": "memory:sdk/tests/web/native/main.dart"
-}],
- outputUnits=[
-  {
-  "id": "outputUnit/1",
-  "kind": "outputUnit",
-  "name": "1",
-  "size": 846,
-  "filename": "out_1.part.js",
-  "imports": [
-    "lib1"
-  ]
-},
-  {
-  "id": "outputUnit/main",
-  "kind": "outputUnit",
-  "name": "main",
-  "filename": "out",
-  "imports": []
-}]
-*/
-
-/*canary.library:
+/*library: 
  constant=[
   {
   "id": "constant/B.C_A = new A.A();\n",
diff --git a/pkg/compiler/test/dump_info/data/js_members.dart b/pkg/compiler/test/dump_info/data/js_members.dart
index 81cdb3e..1b882b7 100644
--- a/pkg/compiler/test/dump_info/data/js_members.dart
+++ b/pkg/compiler/test/dump_info/data/js_members.dart
@@ -166,6 +166,9 @@
     "function/memory:sdk/tests/web/native/main.dart::Foo.mixedPositionalArgs",
     "function/memory:sdk/tests/web/native/main.dart::Foo.singleArg",
     "function/memory:sdk/tests/web/native/main.dart::Foo.singlePositionalArg"
+  ],
+  "supers": [
+    "class/dart:_interceptors::LegacyJavaScriptObject"
   ]
 }]*/
 class Foo {
@@ -278,7 +281,10 @@
   "modifiers": {
     "abstract": false
   },
-  "children": []
+  "children": [],
+  "supers": [
+    "class/dart:_interceptors::LegacyJavaScriptObject"
+  ]
 }]*/
 class Bar {
   external static singleArg(a);
diff --git a/pkg/compiler/test/dump_info/data/members.dart b/pkg/compiler/test/dump_info/data/members.dart
index 5fa0d76..4bc7922 100644
--- a/pkg/compiler/test/dump_info/data/members.dart
+++ b/pkg/compiler/test/dump_info/data/members.dart
@@ -98,7 +98,8 @@
     "function/memory:sdk/tests/web/native/main.dart::C.C._default",
     "function/memory:sdk/tests/web/native/main.dart::C.C.create",
     "function/memory:sdk/tests/web/native/main.dart::C.compute"
-  ]
+  ],
+  "supers": []
 }]*/
 class C {
   /*member: C.value:
@@ -291,7 +292,8 @@
   "children": [
     "field/memory:sdk/tests/web/native/main.dart::A.a",
     "function/memory:sdk/tests/web/native/main.dart::A.A"
-  ]
+  ],
+  "supers": []
 }],
  classType=[{
   "id": "classType/memory:sdk/tests/web/native/main.dart::A",
diff --git a/pkg/compiler/test/dump_info/data_new/mixin_with_tearoff_test.dart b/pkg/compiler/test/dump_info/data_new/mixin_with_tearoff_test.dart
index 51ce89b..e769b3f 100644
--- a/pkg/compiler/test/dump_info/data_new/mixin_with_tearoff_test.dart
+++ b/pkg/compiler/test/dump_info/data_new/mixin_with_tearoff_test.dart
@@ -103,7 +103,8 @@
   "modifiers": {
     "abstract": false
   },
-  "children": []
+  "children": [],
+  "supers": []
 }]*/
 class Super<T> {
   void method(T t) {}
@@ -121,7 +122,8 @@
   },
   "children": [
     "function/memory:sdk/tests/web/native/main.dart::Mixin.method"
-  ]
+  ],
+  "supers": []
 }]*/
 class Mixin {
   /*member: Mixin.method:
@@ -206,6 +208,10 @@
   },
   "children": [
     "function/memory:sdk/tests/web/native/main.dart::Clazz.method"
+  ],
+  "supers": [
+    "class/memory:sdk/tests/web/native/main.dart::Mixin",
+    "class/memory:sdk/tests/web/native/main.dart::Super"
   ]
 }]*/
 /*member: Clazz.method:
@@ -291,6 +297,9 @@
   "children": [
     "function/memory:sdk/tests/web/native/main.dart::Subclass.Subclass",
     "function/memory:sdk/tests/web/native/main.dart::Subclass.test"
+  ],
+  "supers": [
+    "class/memory:sdk/tests/web/native/main.dart::Clazz"
   ]
 }]*/
 /*member: Subclass.:function=[{
diff --git a/pkg/dart2js_info/lib/binary_serialization.dart b/pkg/dart2js_info/lib/binary_serialization.dart
index 0d707ce..ecf2ef7 100644
--- a/pkg/dart2js_info/lib/binary_serialization.dart
+++ b/pkg/dart2js_info/lib/binary_serialization.dart
@@ -117,6 +117,7 @@
       sink.writeBool(info.isAbstract);
       sink.writeList(info.fields, visitField);
       sink.writeList(info.functions, visitFunction);
+      sink.writeList(info.supers, visitClass);
     });
   }
 
@@ -387,6 +388,7 @@
         info.isAbstract = source.readBool();
         info.fields.addAll(source.readList(readField));
         info.functions.addAll(source.readList(readFunction));
+        info.supers.addAll(source.readList(readClass));
 
         setParent(BasicInfo child) => child.parent = info;
         info.fields.forEach(setParent);
diff --git a/pkg/dart2js_info/lib/info.dart b/pkg/dart2js_info/lib/info.dart
index 509edb0..cfc7242 100644
--- a/pkg/dart2js_info/lib/info.dart
+++ b/pkg/dart2js_info/lib/info.dart
@@ -257,14 +257,19 @@
   // but this should be fixed.
   List<FieldInfo> fields = <FieldInfo>[];
 
+  /// Classes in the supertype hierarchy for this class.
+  List<ClassInfo> supers = <ClassInfo>[];
+
   ClassInfo(
       {required String name,
       required this.isAbstract,
+      required this.supers,
       OutputUnitInfo? outputUnit,
       int size = 0})
       : super(InfoKind.clazz, name, outputUnit, size, null);
 
-  ClassInfo.fromKernel({required String name, required this.isAbstract})
+  ClassInfo.fromKernel(
+      {required String name, required this.isAbstract, required this.supers})
       : super(InfoKind.clazz, name, null, 0, null);
 
   ClassInfo.internal() : super.internal(InfoKind.clazz);
diff --git a/pkg/dart2js_info/lib/json_info_codec.dart b/pkg/dart2js_info/lib/json_info_codec.dart
index 937ea4d..a969a9d 100644
--- a/pkg/dart2js_info/lib/json_info_codec.dart
+++ b/pkg/dart2js_info/lib/json_info_codec.dart
@@ -113,9 +113,10 @@
         result.classes.add(child);
       } else if (child is ClassTypeInfo) {
         result.classTypes.add(child);
-      } else {
-        assert(child is TypedefInfo);
+      } else if (child is TypedefInfo) {
         result.typedefs.add(child);
+      } else {
+        throw StateError('Invalid LibraryInfo child: $child');
       }
     }
     return result;
@@ -132,11 +133,14 @@
     for (var child in json['children'].map((id) => parseId(id))) {
       if (child is FunctionInfo) {
         result.functions.add(child);
-      } else {
-        assert(child is FieldInfo);
+      } else if (child is FieldInfo) {
         result.fields.add(child);
+      } else {
+        throw StateError('Invalid ClassInfo child: $child');
       }
     }
+    result.supers.addAll(
+        json['supers'].map<ClassInfo>((id) => parseId(id) as ClassInfo));
     return result;
   }
 
@@ -350,6 +354,7 @@
         info is LibraryInfo ||
             info is ConstantInfo ||
             info is OutputUnitInfo ||
+            info is ClassInfo ||
             info.parent != null,
         "$info");
 
@@ -510,7 +515,8 @@
         // TODO(sigmund): change format, include only when abstract is true.
         'modifiers': {'abstract': info.isAbstract},
         'children':
-            _toSortedSerializedIds([...info.fields, ...info.functions], idFor)
+            _toSortedSerializedIds([...info.fields, ...info.functions], idFor),
+        'supers': _toSortedSerializedIds(info.supers, idFor)
       });
   }
 
diff --git a/pkg/dart2js_info/lib/proto_info_codec.dart b/pkg/dart2js_info/lib/proto_info_codec.dart
index e81cb1a..a8b3435 100644
--- a/pkg/dart2js_info/lib/proto_info_codec.dart
+++ b/pkg/dart2js_info/lib/proto_info_codec.dart
@@ -35,6 +35,7 @@
     assert(info is LibraryInfo ||
         info is ConstantInfo ||
         info is OutputUnitInfo ||
+        info is ClassInfo ||
         info.parent != null);
 
     int id;
diff --git a/pkg/dart2js_info/test/hello_world/hello_world.js.info.json b/pkg/dart2js_info/test/hello_world/hello_world.js.info.json
index c0bf81b..9e3fa09 100644
--- a/pkg/dart2js_info/test/hello_world/hello_world.js.info.json
+++ b/pkg/dart2js_info/test/hello_world/hello_world.js.info.json
@@ -278,7 +278,8 @@
         },
         "children": [
           "field/dart:_foreign_helper::JS_CONST.code"
-        ]
+        ],
+        "supers": []
       },
       "dart:_interceptors::ArrayIterator": {
         "id": "class/dart:_interceptors::ArrayIterator",
@@ -298,7 +299,8 @@
           "function/dart:_interceptors::ArrayIterator.ArrayIterator",
           "function/dart:_interceptors::ArrayIterator.current",
           "function/dart:_interceptors::ArrayIterator.moveNext"
-        ]
+        ],
+        "supers": []
       },
       "dart:_interceptors::Interceptor": {
         "id": "class/dart:_interceptors::Interceptor",
@@ -312,7 +314,8 @@
         },
         "children": [
           "function/dart:_interceptors::Interceptor.toString"
-        ]
+        ],
+        "supers": []
       },
       "dart:_interceptors::JSArray": {
         "id": "class/dart:_interceptors::JSArray",
@@ -333,6 +336,9 @@
           "function/dart:_interceptors::JSArray.length",
           "function/dart:_interceptors::JSArray.markFixedList",
           "function/dart:_interceptors::JSArray.toString"
+        ],
+        "supers": [
+          "class/dart:_interceptors::Interceptor"
         ]
       },
       "dart:_interceptors::JSBool": {
@@ -347,6 +353,10 @@
         },
         "children": [
           "function/dart:_interceptors::JSBool.toString"
+        ],
+        "supers": [
+          "class/dart:_interceptors::Interceptor",
+          "class/dart:core::bool"
         ]
       },
       "dart:_interceptors::JSInt": {
@@ -359,7 +369,10 @@
         "modifiers": {
           "abstract": false
         },
-        "children": []
+        "children": [],
+        "supers": [
+          "class/dart:_interceptors::JSNumber"
+        ]
       },
       "dart:_interceptors::JSNull": {
         "id": "class/dart:_interceptors::JSNull",
@@ -373,6 +386,10 @@
         },
         "children": [
           "function/dart:_interceptors::JSNull.toString"
+        ],
+        "supers": [
+          "class/dart:_interceptors::Interceptor",
+          "class/dart:core::Null"
         ]
       },
       "dart:_interceptors::JSNumNotInt": {
@@ -385,7 +402,10 @@
         "modifiers": {
           "abstract": false
         },
-        "children": []
+        "children": [],
+        "supers": [
+          "class/dart:_interceptors::JSNumber"
+        ]
       },
       "dart:_interceptors::JSNumber": {
         "id": "class/dart:_interceptors::JSNumber",
@@ -399,6 +419,9 @@
         },
         "children": [
           "function/dart:_interceptors::JSNumber.toString"
+        ],
+        "supers": [
+          "class/dart:_interceptors::Interceptor"
         ]
       },
       "dart:_interceptors::JSString": {
@@ -416,6 +439,9 @@
           "function/dart:_interceptors::JSString.isEmpty",
           "function/dart:_interceptors::JSString.length",
           "function/dart:_interceptors::JSString.toString"
+        ],
+        "supers": [
+          "class/dart:_interceptors::Interceptor"
         ]
       },
       "dart:_interceptors::JSUnmodifiableArray": {
@@ -428,7 +454,10 @@
         "modifiers": {
           "abstract": false
         },
-        "children": []
+        "children": [],
+        "supers": [
+          "class/dart:_interceptors::JSArray"
+        ]
       },
       "dart:_interceptors::JavaScriptObject": {
         "id": "class/dart:_interceptors::JavaScriptObject",
@@ -440,7 +469,10 @@
         "modifiers": {
           "abstract": false
         },
-        "children": []
+        "children": [],
+        "supers": [
+          "class/dart:_interceptors::Interceptor"
+        ]
       },
       "dart:_internal::LateError": {
         "id": "class/dart:_internal::LateError",
@@ -456,6 +488,9 @@
           "field/dart:_internal::LateError._message",
           "function/dart:_internal::LateError.LateError.fieldADI",
           "function/dart:_internal::LateError.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:_js_helper::BoundClosure": {
@@ -482,6 +517,9 @@
           "function/dart:_js_helper::BoundClosure.receiverFieldName",
           "function/dart:_js_helper::BoundClosure.receiverOf",
           "function/dart:_js_helper::BoundClosure.toString"
+        ],
+        "supers": [
+          "class/dart:_js_helper::TearOffClosure"
         ]
       },
       "dart:_js_helper::Closure": {
@@ -504,7 +542,8 @@
           "function/dart:_js_helper::Closure.fromTearOff",
           "function/dart:_js_helper::Closure.isCsp",
           "function/dart:_js_helper::Closure.toString"
-        ]
+        ],
+        "supers": []
       },
       "dart:_js_helper::Primitives": {
         "id": "class/dart:_js_helper::Primitives",
@@ -523,7 +562,8 @@
           "function/dart:_js_helper::Primitives.objectToHumanReadableString",
           "function/dart:_js_helper::Primitives.objectTypeName",
           "function/dart:_js_helper::Primitives.stringConcatUnchecked"
-        ]
+        ],
+        "supers": []
       },
       "dart:_js_helper::RuntimeError": {
         "id": "class/dart:_js_helper::RuntimeError",
@@ -539,6 +579,9 @@
           "field/dart:_js_helper::RuntimeError.message",
           "function/dart:_js_helper::RuntimeError.RuntimeError",
           "function/dart:_js_helper::RuntimeError.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:_js_helper::StaticClosure": {
@@ -554,6 +597,9 @@
         "children": [
           "function/dart:_js_helper::StaticClosure.StaticClosure",
           "function/dart:_js_helper::StaticClosure.toString"
+        ],
+        "supers": [
+          "class/dart:_js_helper::TearOffClosure"
         ]
       },
       "dart:_js_helper::TearOffClosure": {
@@ -566,7 +612,10 @@
         "modifiers": {
           "abstract": true
         },
-        "children": []
+        "children": [],
+        "supers": [
+          "class/dart:_js_helper::Closure"
+        ]
       },
       "dart:_js_shared_embedded_names::RtiUniverseFieldNames": {
         "id": "class/dart:_js_shared_embedded_names::RtiUniverseFieldNames",
@@ -584,7 +633,8 @@
           "field/dart:_js_shared_embedded_names::RtiUniverseFieldNames.sharedEmptyArray",
           "field/dart:_js_shared_embedded_names::RtiUniverseFieldNames.typeParameterVariances",
           "field/dart:_js_shared_embedded_names::RtiUniverseFieldNames.typeRules"
-        ]
+        ],
+        "supers": []
       },
       "dart:_recipe_syntax::Recipe": {
         "id": "class/dart:_recipe_syntax::Recipe",
@@ -600,7 +650,8 @@
           "function/dart:_recipe_syntax::Recipe.digitValue",
           "function/dart:_recipe_syntax::Recipe.isDigit",
           "function/dart:_recipe_syntax::Recipe.isIdentifierStart"
-        ]
+        ],
+        "supers": []
       },
       "dart:_rti::Rti": {
         "id": "class/dart:_rti::Rti",
@@ -666,7 +717,8 @@
           "function/dart:_rti::Rti._setRest",
           "function/dart:_rti::Rti._setSpecializedTestResource",
           "function/dart:_rti::Rti.allocate"
-        ]
+        ],
+        "supers": []
       },
       "dart:_rti::TypeRule": {
         "id": "class/dart:_rti::TypeRule",
@@ -681,7 +733,8 @@
         "children": [
           "function/dart:_rti::TypeRule.lookupSupertype",
           "function/dart:_rti::TypeRule.lookupTypeVariable"
-        ]
+        ],
+        "supers": []
       },
       "dart:_rti::_Error": {
         "id": "class/dart:_rti::_Error",
@@ -697,6 +750,9 @@
           "field/dart:_rti::_Error._message",
           "function/dart:_rti::_Error.compose",
           "function/dart:_rti::_Error.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:_rti::_FunctionParameters": {
@@ -721,7 +777,8 @@
           "function/dart:_rti::_FunctionParameters._setOptionalPositional",
           "function/dart:_rti::_FunctionParameters._setRequiredPositional",
           "function/dart:_rti::_FunctionParameters.allocate"
-        ]
+        ],
+        "supers": []
       },
       "dart:_rti::_Parser": {
         "id": "class/dart:_rti::_Parser",
@@ -761,7 +818,8 @@
           "function/dart:_rti::_Parser.toTypes",
           "function/dart:_rti::_Parser.toTypesNamed",
           "function/dart:_rti::_Parser.universe"
-        ]
+        ],
+        "supers": []
       },
       "dart:_rti::_Type": {
         "id": "class/dart:_rti::_Type",
@@ -775,7 +833,8 @@
         },
         "children": [
           "field/dart:_rti::_Type._rti"
-        ]
+        ],
+        "supers": []
       },
       "dart:_rti::_TypeError": {
         "id": "class/dart:_rti::_TypeError",
@@ -790,6 +849,9 @@
         "children": [
           "function/dart:_rti::_TypeError._TypeError.forType",
           "function/dart:_rti::_TypeError._TypeError.fromMessage"
+        ],
+        "supers": [
+          "class/dart:_rti::_Error"
         ]
       },
       "dart:_rti::_Universe": {
@@ -865,7 +927,8 @@
           "function/dart:_rti::_Universe.sharedEmptyArray",
           "function/dart:_rti::_Universe.typeParameterVariances",
           "function/dart:_rti::_Universe.typeRules"
-        ]
+        ],
+        "supers": []
       },
       "dart:_rti::_Utils": {
         "id": "class/dart:_rti::_Utils",
@@ -903,7 +966,8 @@
           "function/dart:_rti::_Utils.objectKeys",
           "function/dart:_rti::_Utils.stringLessThan",
           "function/dart:_rti::_Utils.substring"
-        ]
+        ],
+        "supers": []
       },
       "dart:collection::IterableBase": {
         "id": "class/dart:collection::IterableBase",
@@ -917,7 +981,8 @@
         },
         "children": [
           "function/dart:collection::IterableBase.iterableToFullString"
-        ]
+        ],
+        "supers": []
       },
       "dart:collection::ListBase": {
         "id": "class/dart:collection::ListBase",
@@ -931,7 +996,8 @@
         },
         "children": [
           "function/dart:collection::ListBase.listToString"
-        ]
+        ],
+        "supers": []
       },
       "dart:core::ArgumentError": {
         "id": "class/dart:core::ArgumentError",
@@ -953,6 +1019,9 @@
           "function/dart:core::ArgumentError._errorExplanation",
           "function/dart:core::ArgumentError._errorName",
           "function/dart:core::ArgumentError.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:core::AssertionError": {
@@ -969,6 +1038,9 @@
           "field/dart:core::AssertionError.message",
           "function/dart:core::AssertionError.AssertionError",
           "function/dart:core::AssertionError.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:core::ConcurrentModificationError": {
@@ -985,6 +1057,9 @@
           "field/dart:core::ConcurrentModificationError.modifiedObject",
           "function/dart:core::ConcurrentModificationError.ConcurrentModificationError",
           "function/dart:core::ConcurrentModificationError.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:core::CyclicInitializationError": {
@@ -1001,6 +1076,9 @@
           "field/dart:core::CyclicInitializationError.variableName",
           "function/dart:core::CyclicInitializationError.CyclicInitializationError",
           "function/dart:core::CyclicInitializationError.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:core::Error": {
@@ -1017,7 +1095,8 @@
           "function/dart:core::Error._objectToString",
           "function/dart:core::Error._stringToSafeString",
           "function/dart:core::Error.safeToString"
-        ]
+        ],
+        "supers": []
       },
       "dart:core::IndexError": {
         "id": "class/dart:core::IndexError",
@@ -1035,6 +1114,10 @@
           "function/dart:core::IndexError.IndexError",
           "function/dart:core::IndexError._errorExplanation",
           "function/dart:core::IndexError._errorName"
+        ],
+        "supers": [
+          "class/dart:core::ArgumentError",
+          "class/dart:core::RangeError"
         ]
       },
       "dart:core::Null": {
@@ -1049,7 +1132,8 @@
         },
         "children": [
           "function/dart:core::Null.toString"
-        ]
+        ],
+        "supers": []
       },
       "dart:core::NullThrownError": {
         "id": "class/dart:core::NullThrownError",
@@ -1064,6 +1148,9 @@
         "children": [
           "function/dart:core::NullThrownError.NullThrownError",
           "function/dart:core::NullThrownError.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:core::Object": {
@@ -1078,7 +1165,8 @@
         },
         "children": [
           "function/dart:core::Object.toString"
-        ]
+        ],
+        "supers": []
       },
       "dart:core::RangeError": {
         "id": "class/dart:core::RangeError",
@@ -1096,6 +1184,9 @@
           "function/dart:core::RangeError.RangeError.value",
           "function/dart:core::RangeError._errorExplanation",
           "function/dart:core::RangeError._errorName"
+        ],
+        "supers": [
+          "class/dart:core::ArgumentError"
         ]
       },
       "dart:core::StateError": {
@@ -1110,6 +1201,9 @@
         },
         "children": [
           "field/dart:core::StateError.message"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:core::StringBuffer": {
@@ -1132,7 +1226,8 @@
           "function/dart:core::StringBuffer.toString",
           "function/dart:core::StringBuffer.write",
           "function/dart:core::StringBuffer.writeAll"
-        ]
+        ],
+        "supers": []
       },
       "dart:core::UnsupportedError": {
         "id": "class/dart:core::UnsupportedError",
@@ -1148,6 +1243,9 @@
           "field/dart:core::UnsupportedError.message",
           "function/dart:core::UnsupportedError.UnsupportedError",
           "function/dart:core::UnsupportedError.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:core::_Enum": {
@@ -1163,7 +1261,8 @@
         "children": [
           "field/dart:core::_Enum._name",
           "field/dart:core::_Enum.index"
-        ]
+        ],
+        "supers": []
       },
       "dart:core::bool": {
         "id": "class/dart:core::bool",
@@ -1177,7 +1276,8 @@
         },
         "children": [
           "function/dart:core::bool.toString"
-        ]
+        ],
+        "supers": []
       }
     },
     "classType": {
@@ -28711,7 +28811,7 @@
       "id": "outputUnit/main",
       "kind": "outputUnit",
       "name": "main",
-      "size": 90269,
+      "size": 90293,
       "filename": "hello_world.js",
       "imports": []
     }
@@ -28721,12 +28821,12 @@
   "dump_minor_version": 1,
   "program": {
     "entrypoint": "function/hello_world.dart::main",
-    "size": 90269,
-    "ramUsage": "194.188 MB",
+    "size": 90293,
+    "ramUsage": "195.313 MB",
     "dart2jsVersion": null,
-    "compilationMoment": "2022-07-08 12:57:36.142141",
-    "compilationDuration": 1321045,
-    "toJsonDuration": 1000,
+    "compilationMoment": "2022-07-14 17:35:15.006337",
+    "compilationDuration": 1289072,
+    "toJsonDuration": 2000,
     "dumpInfoDuration": 0,
     "noSuchMethodEnabled": false,
     "isRuntimeTypeUsed": false,
diff --git a/pkg/dart2js_info/test/hello_world_deferred/hello_world_deferred.js.info.json b/pkg/dart2js_info/test/hello_world_deferred/hello_world_deferred.js.info.json
index f583ac5..063aef8 100644
--- a/pkg/dart2js_info/test/hello_world_deferred/hello_world_deferred.js.info.json
+++ b/pkg/dart2js_info/test/hello_world_deferred/hello_world_deferred.js.info.json
@@ -413,7 +413,8 @@
         },
         "children": [
           "field/dart:_foreign_helper::JS_CONST.code"
-        ]
+        ],
+        "supers": []
       },
       "dart:_interceptors::ArrayIterator": {
         "id": "class/dart:_interceptors::ArrayIterator",
@@ -433,7 +434,8 @@
           "function/dart:_interceptors::ArrayIterator.ArrayIterator",
           "function/dart:_interceptors::ArrayIterator.current",
           "function/dart:_interceptors::ArrayIterator.moveNext"
-        ]
+        ],
+        "supers": []
       },
       "dart:_interceptors::Interceptor": {
         "id": "class/dart:_interceptors::Interceptor",
@@ -449,7 +451,8 @@
           "function/dart:_interceptors::Interceptor.==",
           "function/dart:_interceptors::Interceptor.hashCode",
           "function/dart:_interceptors::Interceptor.toString"
-        ]
+        ],
+        "supers": []
       },
       "dart:_interceptors::JSArray": {
         "id": "class/dart:_interceptors::JSArray",
@@ -481,6 +484,10 @@
           "function/dart:_interceptors::JSArray.length",
           "function/dart:_interceptors::JSArray.markFixedList",
           "function/dart:_interceptors::JSArray.toString"
+        ],
+        "supers": [
+          "class/dart:_interceptors::Interceptor",
+          "class/dart:core::List"
         ]
       },
       "dart:_interceptors::JSBool": {
@@ -496,6 +503,10 @@
         "children": [
           "function/dart:_interceptors::JSBool.hashCode",
           "function/dart:_interceptors::JSBool.toString"
+        ],
+        "supers": [
+          "class/dart:_interceptors::Interceptor",
+          "class/dart:core::bool"
         ]
       },
       "dart:_interceptors::JSInt": {
@@ -508,7 +519,10 @@
         "modifiers": {
           "abstract": false
         },
-        "children": []
+        "children": [],
+        "supers": [
+          "class/dart:_interceptors::JSNumber"
+        ]
       },
       "dart:_interceptors::JSNull": {
         "id": "class/dart:_interceptors::JSNull",
@@ -524,6 +538,10 @@
           "function/dart:_interceptors::JSNull.==",
           "function/dart:_interceptors::JSNull.hashCode",
           "function/dart:_interceptors::JSNull.toString"
+        ],
+        "supers": [
+          "class/dart:_interceptors::Interceptor",
+          "class/dart:core::Null"
         ]
       },
       "dart:_interceptors::JSNumNotInt": {
@@ -536,7 +554,10 @@
         "modifiers": {
           "abstract": false
         },
-        "children": []
+        "children": [],
+        "supers": [
+          "class/dart:_interceptors::JSNumber"
+        ]
       },
       "dart:_interceptors::JSNumber": {
         "id": "class/dart:_interceptors::JSNumber",
@@ -553,6 +574,9 @@
           "function/dart:_interceptors::JSNumber._shrOtherPositive",
           "function/dart:_interceptors::JSNumber.hashCode",
           "function/dart:_interceptors::JSNumber.toString"
+        ],
+        "supers": [
+          "class/dart:_interceptors::Interceptor"
         ]
       },
       "dart:_interceptors::JSString": {
@@ -571,6 +595,9 @@
           "function/dart:_interceptors::JSString.isEmpty",
           "function/dart:_interceptors::JSString.length",
           "function/dart:_interceptors::JSString.toString"
+        ],
+        "supers": [
+          "class/dart:_interceptors::Interceptor"
         ]
       },
       "dart:_interceptors::JSUnmodifiableArray": {
@@ -583,7 +610,10 @@
         "modifiers": {
           "abstract": false
         },
-        "children": []
+        "children": [],
+        "supers": [
+          "class/dart:_interceptors::JSArray"
+        ]
       },
       "dart:_interceptors::JavaScriptObject": {
         "id": "class/dart:_interceptors::JavaScriptObject",
@@ -595,7 +625,10 @@
         "modifiers": {
           "abstract": false
         },
-        "children": []
+        "children": [],
+        "supers": [
+          "class/dart:_interceptors::Interceptor"
+        ]
       },
       "dart:_interceptors::LegacyJavaScriptObject": {
         "id": "class/dart:_interceptors::LegacyJavaScriptObject",
@@ -610,6 +643,9 @@
         "children": [
           "function/dart:_interceptors::LegacyJavaScriptObject.hashCode",
           "function/dart:_interceptors::LegacyJavaScriptObject.toString"
+        ],
+        "supers": [
+          "class/dart:_interceptors::JavaScriptObject"
         ]
       },
       "dart:_interceptors::PlainJavaScriptObject": {
@@ -622,7 +658,10 @@
         "modifiers": {
           "abstract": false
         },
-        "children": []
+        "children": [],
+        "supers": [
+          "class/dart:_interceptors::LegacyJavaScriptObject"
+        ]
       },
       "dart:_interceptors::UnknownJavaScriptObject": {
         "id": "class/dart:_interceptors::UnknownJavaScriptObject",
@@ -634,7 +673,10 @@
         "modifiers": {
           "abstract": false
         },
-        "children": []
+        "children": [],
+        "supers": [
+          "class/dart:_interceptors::LegacyJavaScriptObject"
+        ]
       },
       "dart:_internal::LateError": {
         "id": "class/dart:_internal::LateError",
@@ -651,6 +693,9 @@
           "function/dart:_internal::LateError.LateError.fieldADI",
           "function/dart:_internal::LateError.LateError.localNI",
           "function/dart:_internal::LateError.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:_internal::NotNullableError": {
@@ -666,6 +711,10 @@
         "children": [
           "field/dart:_internal::NotNullableError._name",
           "function/dart:_internal::NotNullableError.NotNullableError"
+        ],
+        "supers": [
+          "class/dart:core::Error",
+          "class/dart:core::TypeError"
         ]
       },
       "dart:_js_helper::BoundClosure": {
@@ -695,6 +744,9 @@
           "function/dart:_js_helper::BoundClosure.receiverFieldName",
           "function/dart:_js_helper::BoundClosure.receiverOf",
           "function/dart:_js_helper::BoundClosure.toString"
+        ],
+        "supers": [
+          "class/dart:_js_helper::TearOffClosure"
         ]
       },
       "dart:_js_helper::Closure": {
@@ -717,7 +769,8 @@
           "function/dart:_js_helper::Closure.fromTearOff",
           "function/dart:_js_helper::Closure.isCsp",
           "function/dart:_js_helper::Closure.toString"
-        ]
+        ],
+        "supers": []
       },
       "dart:_js_helper::Closure0Args": {
         "id": "class/dart:_js_helper::Closure0Args",
@@ -729,7 +782,10 @@
         "modifiers": {
           "abstract": true
         },
-        "children": []
+        "children": [],
+        "supers": [
+          "class/dart:_js_helper::Closure"
+        ]
       },
       "dart:_js_helper::Closure2Args": {
         "id": "class/dart:_js_helper::Closure2Args",
@@ -741,7 +797,10 @@
         "modifiers": {
           "abstract": true
         },
-        "children": []
+        "children": [],
+        "supers": [
+          "class/dart:_js_helper::Closure"
+        ]
       },
       "dart:_js_helper::DeferredNotLoadedError": {
         "id": "class/dart:_js_helper::DeferredNotLoadedError",
@@ -757,6 +816,9 @@
           "field/dart:_js_helper::DeferredNotLoadedError.libraryName",
           "function/dart:_js_helper::DeferredNotLoadedError.DeferredNotLoadedError",
           "function/dart:_js_helper::DeferredNotLoadedError.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:_js_helper::ExceptionAndStackTrace": {
@@ -773,7 +835,8 @@
           "field/dart:_js_helper::ExceptionAndStackTrace.dartException",
           "field/dart:_js_helper::ExceptionAndStackTrace.stackTrace",
           "function/dart:_js_helper::ExceptionAndStackTrace.ExceptionAndStackTrace"
-        ]
+        ],
+        "supers": []
       },
       "dart:_js_helper::JsLinkedHashMap": {
         "id": "class/dart:_js_helper::JsLinkedHashMap",
@@ -815,6 +878,10 @@
           "function/dart:_js_helper::JsLinkedHashMap.keys",
           "function/dart:_js_helper::JsLinkedHashMap.length",
           "function/dart:_js_helper::JsLinkedHashMap.toString"
+        ],
+        "supers": [
+          "class/dart:collection::LinkedHashMap",
+          "class/dart:collection::MapBase"
         ]
       },
       "dart:_js_helper::JsNoSuchMethodError": {
@@ -833,6 +900,9 @@
           "field/dart:_js_helper::JsNoSuchMethodError._receiver",
           "function/dart:_js_helper::JsNoSuchMethodError.JsNoSuchMethodError",
           "function/dart:_js_helper::JsNoSuchMethodError.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:_js_helper::LinkedHashMapCell": {
@@ -851,7 +921,8 @@
           "field/dart:_js_helper::LinkedHashMapCell.hashMapCellKey",
           "field/dart:_js_helper::LinkedHashMapCell.hashMapCellValue",
           "function/dart:_js_helper::LinkedHashMapCell.LinkedHashMapCell"
-        ]
+        ],
+        "supers": []
       },
       "dart:_js_helper::LinkedHashMapKeyIterable": {
         "id": "class/dart:_js_helper::LinkedHashMapKeyIterable",
@@ -867,7 +938,8 @@
           "field/dart:_js_helper::LinkedHashMapKeyIterable._map",
           "function/dart:_js_helper::LinkedHashMapKeyIterable.LinkedHashMapKeyIterable",
           "function/dart:_js_helper::LinkedHashMapKeyIterable.length"
-        ]
+        ],
+        "supers": []
       },
       "dart:_js_helper::LinkedHashMapKeyIterator": {
         "id": "class/dart:_js_helper::LinkedHashMapKeyIterator",
@@ -884,7 +956,8 @@
           "field/dart:_js_helper::LinkedHashMapKeyIterator._current",
           "field/dart:_js_helper::LinkedHashMapKeyIterator._map",
           "field/dart:_js_helper::LinkedHashMapKeyIterator._modifications"
-        ]
+        ],
+        "supers": []
       },
       "dart:_js_helper::NullError": {
         "id": "class/dart:_js_helper::NullError",
@@ -901,6 +974,9 @@
           "field/dart:_js_helper::NullError._method",
           "function/dart:_js_helper::NullError.NullError",
           "function/dart:_js_helper::NullError.toString"
+        ],
+        "supers": [
+          "class/dart:core::TypeError"
         ]
       },
       "dart:_js_helper::NullThrownFromJavaScriptException": {
@@ -917,6 +993,9 @@
           "field/dart:_js_helper::NullThrownFromJavaScriptException._irritant",
           "function/dart:_js_helper::NullThrownFromJavaScriptException.NullThrownFromJavaScriptException",
           "function/dart:_js_helper::NullThrownFromJavaScriptException.toString"
+        ],
+        "supers": [
+          "class/dart:core::Exception"
         ]
       },
       "dart:_js_helper::Primitives": {
@@ -940,7 +1019,8 @@
           "function/dart:_js_helper::Primitives.objectToHumanReadableString",
           "function/dart:_js_helper::Primitives.objectTypeName",
           "function/dart:_js_helper::Primitives.stringConcatUnchecked"
-        ]
+        ],
+        "supers": []
       },
       "dart:_js_helper::RuntimeError": {
         "id": "class/dart:_js_helper::RuntimeError",
@@ -956,6 +1036,9 @@
           "field/dart:_js_helper::RuntimeError.message",
           "function/dart:_js_helper::RuntimeError.RuntimeError",
           "function/dart:_js_helper::RuntimeError.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:_js_helper::StaticClosure": {
@@ -971,6 +1054,9 @@
         "children": [
           "function/dart:_js_helper::StaticClosure.StaticClosure",
           "function/dart:_js_helper::StaticClosure.toString"
+        ],
+        "supers": [
+          "class/dart:_js_helper::TearOffClosure"
         ]
       },
       "dart:_js_helper::TearOffClosure": {
@@ -983,7 +1069,10 @@
         "modifiers": {
           "abstract": true
         },
-        "children": []
+        "children": [],
+        "supers": [
+          "class/dart:_js_helper::Closure"
+        ]
       },
       "dart:_js_helper::TypeErrorDecoder": {
         "id": "class/dart:_js_helper::TypeErrorDecoder",
@@ -1023,7 +1112,8 @@
           "function/dart:_js_helper::TypeErrorDecoder.provokePropertyErrorOn",
           "function/dart:_js_helper::TypeErrorDecoder.provokePropertyErrorOnNull",
           "function/dart:_js_helper::TypeErrorDecoder.provokePropertyErrorOnUndefined"
-        ]
+        ],
+        "supers": []
       },
       "dart:_js_helper::UnknownJsTypeError": {
         "id": "class/dart:_js_helper::UnknownJsTypeError",
@@ -1039,6 +1129,9 @@
           "field/dart:_js_helper::UnknownJsTypeError._message",
           "function/dart:_js_helper::UnknownJsTypeError.UnknownJsTypeError",
           "function/dart:_js_helper::UnknownJsTypeError.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:_js_helper::_AssertionError": {
@@ -1054,6 +1147,9 @@
         "children": [
           "function/dart:_js_helper::_AssertionError._AssertionError",
           "function/dart:_js_helper::_AssertionError.toString"
+        ],
+        "supers": [
+          "class/dart:core::AssertionError"
         ]
       },
       "dart:_js_helper::_StackTrace": {
@@ -1071,6 +1167,9 @@
           "field/dart:_js_helper::_StackTrace._trace",
           "function/dart:_js_helper::_StackTrace._StackTrace",
           "function/dart:_js_helper::_StackTrace.toString"
+        ],
+        "supers": [
+          "class/dart:core::StackTrace"
         ]
       },
       "dart:_js_shared_embedded_names::RtiUniverseFieldNames": {
@@ -1089,7 +1188,8 @@
           "field/dart:_js_shared_embedded_names::RtiUniverseFieldNames.sharedEmptyArray",
           "field/dart:_js_shared_embedded_names::RtiUniverseFieldNames.typeParameterVariances",
           "field/dart:_js_shared_embedded_names::RtiUniverseFieldNames.typeRules"
-        ]
+        ],
+        "supers": []
       },
       "dart:_late_helper::_Cell": {
         "id": "class/dart:_late_helper::_Cell",
@@ -1108,7 +1208,8 @@
           "function/dart:_late_helper::_Cell._readLocal",
           "function/dart:_late_helper::_Cell.readLocal",
           "function/dart:_late_helper::_Cell.value"
-        ]
+        ],
+        "supers": []
       },
       "dart:_recipe_syntax::Recipe": {
         "id": "class/dart:_recipe_syntax::Recipe",
@@ -1124,7 +1225,8 @@
           "function/dart:_recipe_syntax::Recipe.digitValue",
           "function/dart:_recipe_syntax::Recipe.isDigit",
           "function/dart:_recipe_syntax::Recipe.isIdentifierStart"
-        ]
+        ],
+        "supers": []
       },
       "dart:_rti::Rti": {
         "id": "class/dart:_rti::Rti",
@@ -1190,7 +1292,8 @@
           "function/dart:_rti::Rti._setRest",
           "function/dart:_rti::Rti._setSpecializedTestResource",
           "function/dart:_rti::Rti.allocate"
-        ]
+        ],
+        "supers": []
       },
       "dart:_rti::TypeRule": {
         "id": "class/dart:_rti::TypeRule",
@@ -1205,7 +1308,8 @@
         "children": [
           "function/dart:_rti::TypeRule.lookupSupertype",
           "function/dart:_rti::TypeRule.lookupTypeVariable"
-        ]
+        ],
+        "supers": []
       },
       "dart:_rti::_Error": {
         "id": "class/dart:_rti::_Error",
@@ -1221,6 +1325,9 @@
           "field/dart:_rti::_Error._message",
           "function/dart:_rti::_Error.compose",
           "function/dart:_rti::_Error.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:_rti::_FunctionParameters": {
@@ -1245,7 +1352,8 @@
           "function/dart:_rti::_FunctionParameters._setOptionalPositional",
           "function/dart:_rti::_FunctionParameters._setRequiredPositional",
           "function/dart:_rti::_FunctionParameters.allocate"
-        ]
+        ],
+        "supers": []
       },
       "dart:_rti::_Parser": {
         "id": "class/dart:_rti::_Parser",
@@ -1285,7 +1393,8 @@
           "function/dart:_rti::_Parser.toTypes",
           "function/dart:_rti::_Parser.toTypesNamed",
           "function/dart:_rti::_Parser.universe"
-        ]
+        ],
+        "supers": []
       },
       "dart:_rti::_Type": {
         "id": "class/dart:_rti::_Type",
@@ -1299,7 +1408,8 @@
         },
         "children": [
           "field/dart:_rti::_Type._rti"
-        ]
+        ],
+        "supers": []
       },
       "dart:_rti::_TypeError": {
         "id": "class/dart:_rti::_TypeError",
@@ -1314,6 +1424,10 @@
         "children": [
           "function/dart:_rti::_TypeError._TypeError.forType",
           "function/dart:_rti::_TypeError._TypeError.fromMessage"
+        ],
+        "supers": [
+          "class/dart:_rti::_Error",
+          "class/dart:core::TypeError"
         ]
       },
       "dart:_rti::_Universe": {
@@ -1389,7 +1503,8 @@
           "function/dart:_rti::_Universe.sharedEmptyArray",
           "function/dart:_rti::_Universe.typeParameterVariances",
           "function/dart:_rti::_Universe.typeRules"
-        ]
+        ],
+        "supers": []
       },
       "dart:_rti::_Utils": {
         "id": "class/dart:_rti::_Utils",
@@ -1427,7 +1542,8 @@
           "function/dart:_rti::_Utils.objectKeys",
           "function/dart:_rti::_Utils.stringLessThan",
           "function/dart:_rti::_Utils.substring"
-        ]
+        ],
+        "supers": []
       },
       "dart:async::AsyncError": {
         "id": "class/dart:async::AsyncError",
@@ -1445,6 +1561,9 @@
           "function/dart:async::AsyncError.AsyncError",
           "function/dart:async::AsyncError.defaultStackTrace",
           "function/dart:async::AsyncError.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:async::Completer": {
@@ -1459,7 +1578,8 @@
         },
         "children": [
           "function/dart:async::Completer.Completer"
-        ]
+        ],
+        "supers": []
       },
       "dart:async::DeferredLoadException": {
         "id": "class/dart:async::DeferredLoadException",
@@ -1475,6 +1595,9 @@
           "field/dart:async::DeferredLoadException._s",
           "function/dart:async::DeferredLoadException.DeferredLoadException",
           "function/dart:async::DeferredLoadException.toString"
+        ],
+        "supers": [
+          "class/dart:core::Exception"
         ]
       },
       "dart:async::Future": {
@@ -1491,7 +1614,8 @@
           "function/dart:async::Future.Future.error",
           "function/dart:async::Future.Future.value",
           "function/dart:async::Future.wait"
-        ]
+        ],
+        "supers": []
       },
       "dart:async::StreamIterator": {
         "id": "class/dart:async::StreamIterator",
@@ -1505,7 +1629,8 @@
         },
         "children": [
           "function/dart:async::StreamIterator.StreamIterator"
-        ]
+        ],
+        "supers": []
       },
       "dart:async::Timer": {
         "id": "class/dart:async::Timer",
@@ -1519,7 +1644,8 @@
         },
         "children": [
           "function/dart:async::Timer._createTimer"
-        ]
+        ],
+        "supers": []
       },
       "dart:async::Zone": {
         "id": "class/dart:async::Zone",
@@ -1536,7 +1662,8 @@
           "function/dart:async::Zone._enter",
           "function/dart:async::Zone._leave",
           "function/dart:async::Zone.current"
-        ]
+        ],
+        "supers": []
       },
       "dart:async::_AsyncAwaitCompleter": {
         "id": "class/dart:async::_AsyncAwaitCompleter",
@@ -1555,6 +1682,9 @@
           "function/dart:async::_AsyncAwaitCompleter.complete",
           "function/dart:async::_AsyncAwaitCompleter.completeError",
           "function/dart:async::_AsyncAwaitCompleter.future"
+        ],
+        "supers": [
+          "class/dart:async::Completer"
         ]
       },
       "dart:async::_AsyncCallbackEntry": {
@@ -1571,7 +1701,8 @@
           "field/dart:async::_AsyncCallbackEntry.callback",
           "field/dart:async::_AsyncCallbackEntry.next",
           "function/dart:async::_AsyncCallbackEntry._AsyncCallbackEntry"
-        ]
+        ],
+        "supers": []
       },
       "dart:async::_AsyncCompleter": {
         "id": "class/dart:async::_AsyncCompleter",
@@ -1587,6 +1718,9 @@
           "function/dart:async::_AsyncCompleter._AsyncCompleter",
           "function/dart:async::_AsyncCompleter._completeError",
           "function/dart:async::_AsyncCompleter.complete"
+        ],
+        "supers": [
+          "class/dart:async::_Completer"
         ]
       },
       "dart:async::_AsyncRun": {
@@ -1606,7 +1740,8 @@
           "function/dart:async::_AsyncRun._scheduleImmediateJsOverride",
           "function/dart:async::_AsyncRun._scheduleImmediateWithSetImmediate",
           "function/dart:async::_AsyncRun._scheduleImmediateWithTimer"
-        ]
+        ],
+        "supers": []
       },
       "dart:async::_Completer": {
         "id": "class/dart:async::_Completer",
@@ -1621,6 +1756,9 @@
         "children": [
           "field/dart:async::_Completer.future",
           "function/dart:async::_Completer.completeError"
+        ],
+        "supers": [
+          "class/dart:async::Completer"
         ]
       },
       "dart:async::_Future": {
@@ -1670,6 +1808,9 @@
           "function/dart:async::_Future._setValue",
           "function/dart:async::_Future._thenAwait",
           "function/dart:async::_Future.then"
+        ],
+        "supers": [
+          "class/dart:async::Future"
         ]
       },
       "dart:async::_FutureListener": {
@@ -1705,7 +1846,8 @@
           "function/dart:async::_FutureListener.hasErrorTest",
           "function/dart:async::_FutureListener.matchesErrorTest",
           "function/dart:async::_FutureListener.shouldChain"
-        ]
+        ],
+        "supers": []
       },
       "dart:async::_RootZone": {
         "id": "class/dart:async::_RootZone",
@@ -1731,6 +1873,9 @@
           "function/dart:async::_RootZone.runGuarded",
           "function/dart:async::_RootZone.runUnary",
           "function/dart:async::_RootZone.scheduleMicrotask"
+        ],
+        "supers": [
+          "class/dart:async::_Zone"
         ]
       },
       "dart:async::_StreamIterator": {
@@ -1748,6 +1893,9 @@
           "field/dart:async::_StreamIterator._stateData",
           "field/dart:async::_StreamIterator._subscription",
           "function/dart:async::_StreamIterator._StreamIterator"
+        ],
+        "supers": [
+          "class/dart:async::StreamIterator"
         ]
       },
       "dart:async::_TimerImpl": {
@@ -1765,6 +1913,9 @@
           "field/dart:async::_TimerImpl._once",
           "field/dart:async::_TimerImpl._tick",
           "function/dart:async::_TimerImpl._TimerImpl"
+        ],
+        "supers": [
+          "class/dart:async::Timer"
         ]
       },
       "dart:async::_Zone": {
@@ -1779,6 +1930,9 @@
         },
         "children": [
           "function/dart:async::_Zone.inSameErrorZone"
+        ],
+        "supers": [
+          "class/dart:async::Zone"
         ]
       },
       "dart:async::_ZoneFunction": {
@@ -1794,7 +1948,8 @@
         "children": [
           "field/dart:async::_ZoneFunction.function",
           "field/dart:async::_ZoneFunction.zone"
-        ]
+        ],
+        "supers": []
       },
       "dart:collection::IterableBase": {
         "id": "class/dart:collection::IterableBase",
@@ -1808,7 +1963,8 @@
         },
         "children": [
           "function/dart:collection::IterableBase.iterableToFullString"
-        ]
+        ],
+        "supers": []
       },
       "dart:collection::LinkedHashMap": {
         "id": "class/dart:collection::LinkedHashMap",
@@ -1822,7 +1978,8 @@
         },
         "children": [
           "function/dart:collection::LinkedHashMap.LinkedHashMap._empty"
-        ]
+        ],
+        "supers": []
       },
       "dart:collection::LinkedHashSet": {
         "id": "class/dart:collection::LinkedHashSet",
@@ -1836,7 +1993,8 @@
         },
         "children": [
           "function/dart:collection::LinkedHashSet.LinkedHashSet"
-        ]
+        ],
+        "supers": []
       },
       "dart:collection::ListBase": {
         "id": "class/dart:collection::ListBase",
@@ -1850,7 +2008,8 @@
         },
         "children": [
           "function/dart:collection::ListBase.listToString"
-        ]
+        ],
+        "supers": []
       },
       "dart:collection::MapBase": {
         "id": "class/dart:collection::MapBase",
@@ -1864,6 +2023,9 @@
         },
         "children": [
           "function/dart:collection::MapBase.mapToString"
+        ],
+        "supers": [
+          "class/dart:collection::MapMixin"
         ]
       },
       "dart:collection::MapMixin": {
@@ -1879,7 +2041,8 @@
         "children": [
           "function/dart:collection::MapMixin.length",
           "function/dart:collection::MapMixin.toString"
-        ]
+        ],
+        "supers": []
       },
       "dart:collection::SetMixin": {
         "id": "class/dart:collection::SetMixin",
@@ -1893,7 +2056,8 @@
         },
         "children": [
           "function/dart:collection::SetMixin.toString"
-        ]
+        ],
+        "supers": []
       },
       "dart:collection::_LinkedCustomHashSet": {
         "id": "class/dart:collection::_LinkedCustomHashSet",
@@ -1909,6 +2073,9 @@
           "field/dart:collection::_LinkedCustomHashSet._equality",
           "field/dart:collection::_LinkedCustomHashSet._hasher",
           "field/dart:collection::_LinkedCustomHashSet._validKey"
+        ],
+        "supers": [
+          "class/dart:collection::_LinkedHashSet"
         ]
       },
       "dart:collection::_LinkedHashSet": {
@@ -1948,6 +2115,10 @@
           "function/dart:collection::_LinkedHashSet.contains",
           "function/dart:collection::_LinkedHashSet.iterator",
           "function/dart:collection::_LinkedHashSet.length"
+        ],
+        "supers": [
+          "class/dart:collection::LinkedHashSet",
+          "class/dart:collection::_SetBase"
         ]
       },
       "dart:collection::_LinkedHashSetCell": {
@@ -1965,7 +2136,8 @@
           "field/dart:collection::_LinkedHashSetCell._next",
           "field/dart:collection::_LinkedHashSetCell._previous",
           "function/dart:collection::_LinkedHashSetCell._LinkedHashSetCell"
-        ]
+        ],
+        "supers": []
       },
       "dart:collection::_LinkedHashSetIterator": {
         "id": "class/dart:collection::_LinkedHashSetIterator",
@@ -1985,7 +2157,8 @@
           "function/dart:collection::_LinkedHashSetIterator._LinkedHashSetIterator",
           "function/dart:collection::_LinkedHashSetIterator.current",
           "function/dart:collection::_LinkedHashSetIterator.moveNext"
-        ]
+        ],
+        "supers": []
       },
       "dart:collection::_LinkedIdentityHashSet": {
         "id": "class/dart:collection::_LinkedIdentityHashSet",
@@ -1999,6 +2172,9 @@
         },
         "children": [
           "function/dart:collection::_LinkedIdentityHashSet._LinkedIdentityHashSet"
+        ],
+        "supers": [
+          "class/dart:collection::_LinkedHashSet"
         ]
       },
       "dart:collection::_SetBase": {
@@ -2011,7 +2187,8 @@
         "modifiers": {
           "abstract": true
         },
-        "children": []
+        "children": [],
+        "supers": []
       },
       "dart:core::ArgumentError": {
         "id": "class/dart:core::ArgumentError",
@@ -2033,6 +2210,9 @@
           "function/dart:core::ArgumentError._errorExplanation",
           "function/dart:core::ArgumentError._errorName",
           "function/dart:core::ArgumentError.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:core::AssertionError": {
@@ -2049,6 +2229,9 @@
           "field/dart:core::AssertionError.message",
           "function/dart:core::AssertionError.AssertionError",
           "function/dart:core::AssertionError.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:core::ConcurrentModificationError": {
@@ -2065,6 +2248,9 @@
           "field/dart:core::ConcurrentModificationError.modifiedObject",
           "function/dart:core::ConcurrentModificationError.ConcurrentModificationError",
           "function/dart:core::ConcurrentModificationError.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:core::CyclicInitializationError": {
@@ -2081,6 +2267,9 @@
           "field/dart:core::CyclicInitializationError.variableName",
           "function/dart:core::CyclicInitializationError.CyclicInitializationError",
           "function/dart:core::CyclicInitializationError.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:core::Duration": {
@@ -2096,7 +2285,8 @@
         "children": [
           "field/dart:core::Duration._duration",
           "function/dart:core::Duration.inMilliseconds"
-        ]
+        ],
+        "supers": []
       },
       "dart:core::Error": {
         "id": "class/dart:core::Error",
@@ -2115,7 +2305,8 @@
           "function/dart:core::Error.safeToString",
           "function/dart:core::Error.stackTrace",
           "function/dart:core::Error.throwWithStackTrace"
-        ]
+        ],
+        "supers": []
       },
       "dart:core::Exception": {
         "id": "class/dart:core::Exception",
@@ -2129,7 +2320,8 @@
         },
         "children": [
           "function/dart:core::Exception.Exception"
-        ]
+        ],
+        "supers": []
       },
       "dart:core::IndexError": {
         "id": "class/dart:core::IndexError",
@@ -2147,6 +2339,10 @@
           "function/dart:core::IndexError.IndexError",
           "function/dart:core::IndexError._errorExplanation",
           "function/dart:core::IndexError._errorName"
+        ],
+        "supers": [
+          "class/dart:core::ArgumentError",
+          "class/dart:core::RangeError"
         ]
       },
       "dart:core::List": {
@@ -2163,7 +2359,8 @@
           "function/dart:core::List.List.filled",
           "function/dart:core::List.List.from",
           "function/dart:core::List.List.generate"
-        ]
+        ],
+        "supers": []
       },
       "dart:core::Null": {
         "id": "class/dart:core::Null",
@@ -2178,7 +2375,8 @@
         "children": [
           "function/dart:core::Null.hashCode",
           "function/dart:core::Null.toString"
-        ]
+        ],
+        "supers": []
       },
       "dart:core::NullThrownError": {
         "id": "class/dart:core::NullThrownError",
@@ -2193,6 +2391,9 @@
         "children": [
           "function/dart:core::NullThrownError.NullThrownError",
           "function/dart:core::NullThrownError.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:core::Object": {
@@ -2209,7 +2410,8 @@
           "function/dart:core::Object.==",
           "function/dart:core::Object.hashCode",
           "function/dart:core::Object.toString"
-        ]
+        ],
+        "supers": []
       },
       "dart:core::RangeError": {
         "id": "class/dart:core::RangeError",
@@ -2228,6 +2430,9 @@
           "function/dart:core::RangeError.RangeError.value",
           "function/dart:core::RangeError._errorExplanation",
           "function/dart:core::RangeError._errorName"
+        ],
+        "supers": [
+          "class/dart:core::ArgumentError"
         ]
       },
       "dart:core::StackOverflowError": {
@@ -2244,6 +2449,9 @@
           "function/dart:core::StackOverflowError.StackOverflowError",
           "function/dart:core::StackOverflowError.stackTrace",
           "function/dart:core::StackOverflowError.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:core::StackTrace": {
@@ -2258,7 +2466,8 @@
         },
         "children": [
           "function/dart:core::StackTrace.current"
-        ]
+        ],
+        "supers": []
       },
       "dart:core::StateError": {
         "id": "class/dart:core::StateError",
@@ -2274,6 +2483,9 @@
           "field/dart:core::StateError.message",
           "function/dart:core::StateError.StateError",
           "function/dart:core::StateError.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:core::StringBuffer": {
@@ -2296,7 +2508,8 @@
           "function/dart:core::StringBuffer.toString",
           "function/dart:core::StringBuffer.write",
           "function/dart:core::StringBuffer.writeAll"
-        ]
+        ],
+        "supers": []
       },
       "dart:core::TypeError": {
         "id": "class/dart:core::TypeError",
@@ -2308,7 +2521,10 @@
         "modifiers": {
           "abstract": false
         },
-        "children": []
+        "children": [],
+        "supers": [
+          "class/dart:core::Error"
+        ]
       },
       "dart:core::UnsupportedError": {
         "id": "class/dart:core::UnsupportedError",
@@ -2324,6 +2540,9 @@
           "field/dart:core::UnsupportedError.message",
           "function/dart:core::UnsupportedError.UnsupportedError",
           "function/dart:core::UnsupportedError.toString"
+        ],
+        "supers": [
+          "class/dart:core::Error"
         ]
       },
       "dart:core::_Enum": {
@@ -2339,7 +2558,8 @@
         "children": [
           "field/dart:core::_Enum._name",
           "field/dart:core::_Enum.index"
-        ]
+        ],
+        "supers": []
       },
       "dart:core::_Exception": {
         "id": "class/dart:core::_Exception",
@@ -2355,6 +2575,9 @@
           "field/dart:core::_Exception.message",
           "function/dart:core::_Exception._Exception",
           "function/dart:core::_Exception.toString"
+        ],
+        "supers": [
+          "class/dart:core::Exception"
         ]
       },
       "dart:core::_StringStackTrace": {
@@ -2370,6 +2593,9 @@
         "children": [
           "field/dart:core::_StringStackTrace._stackTrace",
           "function/dart:core::_StringStackTrace.toString"
+        ],
+        "supers": [
+          "class/dart:core::StackTrace"
         ]
       },
       "dart:core::bool": {
@@ -2385,7 +2611,8 @@
         "children": [
           "function/dart:core::bool.hashCode",
           "function/dart:core::bool.toString"
-        ]
+        ],
+        "supers": []
       }
     },
     "classType": {
@@ -67158,7 +67385,7 @@
       "id": "outputUnit/1",
       "kind": "outputUnit",
       "name": "1",
-      "size": 594,
+      "size": 618,
       "filename": "hello_world_deferred.js_1.part.js",
       "imports": [
         "deferred_import"
@@ -67168,7 +67395,7 @@
       "id": "outputUnit/main",
       "kind": "outputUnit",
       "name": "main",
-      "size": 188115,
+      "size": 188139,
       "filename": "hello_world_deferred.js",
       "imports": []
     }
@@ -67187,12 +67414,12 @@
   "dump_minor_version": 1,
   "program": {
     "entrypoint": "function/hello_world_deferred.dart::main",
-    "size": 188709,
-    "ramUsage": "218.516 MB",
+    "size": 188757,
+    "ramUsage": "222.625 MB",
     "dart2jsVersion": null,
-    "compilationMoment": "2022-07-08 12:58:35.955576",
-    "compilationDuration": 1806706,
-    "toJsonDuration": 3000,
+    "compilationMoment": "2022-07-14 17:35:30.061216",
+    "compilationDuration": 1870645,
+    "toJsonDuration": 2000,
     "dumpInfoDuration": 0,
     "noSuchMethodEnabled": false,
     "isRuntimeTypeUsed": false,
diff --git a/pkg/dart2js_info/test/json_to_proto_test.dart b/pkg/dart2js_info/test/json_to_proto_test.dart
index 5b20745..95d75be 100644
--- a/pkg/dart2js_info/test/json_to_proto_test.dart
+++ b/pkg/dart2js_info/test/json_to_proto_test.dart
@@ -20,11 +20,11 @@
       final proto = AllInfoProtoCodec().encode(decoded);
 
       expect(proto.program.entrypointId, isNotNull);
-      expect(proto.program.size, 90269);
+      expect(proto.program.size, 90293);
       expect(proto.program.compilationMoment.toInt(),
-          DateTime.parse("2022-07-08 12:57:36.142141").microsecondsSinceEpoch);
+          DateTime.parse("2022-07-14 17:35:15.006337").microsecondsSinceEpoch);
       expect(proto.program.toProtoDuration.toInt(),
-          Duration(milliseconds: 1).inMicroseconds);
+          Duration(milliseconds: 2).inMicroseconds);
       expect(proto.program.dumpInfoDuration.toInt(),
           Duration(milliseconds: 0).inMicroseconds);
       expect(proto.program.noSuchMethodEnabled, isFalse);
diff --git a/pkg/dart2js_info/test/parse_test.dart b/pkg/dart2js_info/test/parse_test.dart
index be06468..0145a79 100644
--- a/pkg/dart2js_info/test/parse_test.dart
+++ b/pkg/dart2js_info/test/parse_test.dart
@@ -20,11 +20,11 @@
       expect(program, isNotNull);
 
       expect(program!.entrypoint, isNotNull);
-      expect(program.size, 90269);
+      expect(program.size, 90293);
       expect(program.compilationMoment,
-          DateTime.parse("2022-07-08 12:57:36.142141"));
-      expect(program.compilationDuration, Duration(microseconds: 1321045));
-      expect(program.toJsonDuration, Duration(milliseconds: 1));
+          DateTime.parse("2022-07-14 17:35:15.006337"));
+      expect(program.compilationDuration, Duration(microseconds: 1289072));
+      expect(program.toJsonDuration, Duration(milliseconds: 2));
       expect(program.dumpInfoDuration, Duration(seconds: 0));
       expect(program.noSuchMethodEnabled, false);
       expect(program.minified, false);
diff --git a/pkg/dev_compiler/lib/ddc.dart b/pkg/dev_compiler/lib/ddc.dart
index feaa482..2fb2b45 100755
--- a/pkg/dev_compiler/lib/ddc.dart
+++ b/pkg/dev_compiler/lib/ddc.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart = 2.9
-
 /// Command line entry point for Dart Development Compiler (dartdevc), used to
 /// compile a collection of dart libraries into a single JS module
 
@@ -21,7 +19,7 @@
 ///
 /// [sendPort] may be passed in when started in an isolate. If provided, it is
 /// used for bazel worker communication instead of stdin/stdout.
-Future internalMain(List<String> args, [SendPort sendPort]) async {
+Future internalMain(List<String> args, [SendPort? sendPort]) async {
   // Always returns a new modifiable list.
   var parsedArgs = ParsedArguments.from(args);
 
@@ -51,7 +49,7 @@
 
   /// Keeps track of our last compilation result so it can potentially be
   /// re-used in a worker.
-  CompilerResult lastResult;
+  CompilerResult? lastResult;
 
   /// Performs each individual work request.
   @override
@@ -74,7 +72,7 @@
       output.writeln(message.toString());
     }));
     return WorkResponse()
-      ..exitCode = lastResult.success ? 0 : 1
+      ..exitCode = lastResult!.success ? 0 : 1
       ..output = output.toString();
   }
 }
@@ -87,12 +85,12 @@
 
   print('>>> BATCH START');
 
-  String line;
-  CompilerResult result;
+  String? line;
+  CompilerResult? result;
 
   while ((line = stdin.readLineSync(encoding: utf8))?.isNotEmpty == true) {
     totalTests++;
-    var args = batchArgs.merge(line.split(RegExp(r'\s+')));
+    var args = batchArgs.merge(line!.split(RegExp(r'\s+')));
 
     String outcome;
     try {
diff --git a/pkg/dev_compiler/test/expression_compiler/scope_offset_test.dart b/pkg/dev_compiler/test/expression_compiler/scope_offset_test.dart
index 933dce6..6374d43 100644
--- a/pkg/dev_compiler/test/expression_compiler/scope_offset_test.dart
+++ b/pkg/dev_compiler/test/expression_compiler/scope_offset_test.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart = 2.9
-
 import 'package:dev_compiler/src/kernel/expression_compiler.dart';
 import 'package:front_end/src/api_unstable/ddc.dart';
 import 'package:front_end/src/compute_platform_binaries_location.dart';
@@ -109,11 +107,11 @@
         const TypeMatcher<FunctionNode>()
             .having(
                 (c) => c.fileOffset,
-                '${fun.parent.toText(astTextStrategyForTesting)} : fileOffset',
+                '${fun.parent!.toText(astTextStrategyForTesting)} : fileOffset',
                 isNot(equals(-1)))
             .having(
                 (c) => c.fileEndOffset,
-                '${fun.parent.toText(astTextStrategyForTesting)} : fileEndOffset',
+                '${fun.parent!.toText(astTextStrategyForTesting)} : fileEndOffset',
                 isNot(equals(-1))));
 
     super.visitFunctionNode(fun);
diff --git a/pkg/dev_compiler/test/worker/worker_test.dart b/pkg/dev_compiler/test/worker/worker_test.dart
index 6e3e03e..ea2d52b 100644
--- a/pkg/dev_compiler/test/worker/worker_test.dart
+++ b/pkg/dev_compiler/test/worker/worker_test.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart = 2.9
-
 import 'dart:async';
 import 'dart:convert';
 import 'dart:io';
@@ -379,9 +377,9 @@
 }
 
 Future<WorkResponse> _readResponse(MessageGrouper messageGrouper) async {
-  var buffer = await messageGrouper.next as List<int>;
+  var buffer = await messageGrouper.next as List<int>?;
   try {
-    return WorkResponse.fromBuffer(buffer);
+    return WorkResponse.fromBuffer(buffer!);
   } catch (_) {
     var bufferAsString =
         buffer == null ? '' : 'String: ${utf8.decode(buffer)}\n';
diff --git a/sdk/lib/_http/http_headers.dart b/sdk/lib/_http/http_headers.dart
index 2ccf23a..dad7403 100644
--- a/sdk/lib/_http/http_headers.dart
+++ b/sdk/lib/_http/http_headers.dart
@@ -4,6 +4,8 @@
 
 part of dart._http;
 
+final _digitsValidator = RegExp(r"^\d+$");
+
 class _HttpHeaders implements HttpHeaders {
   final Map<String, List<String>> _headers;
   // The original header names keyed by the lowercase header names.
@@ -373,12 +375,18 @@
 
   void _addContentLength(String name, value) {
     if (value is int) {
-      contentLength = value;
+      if (value < 0) {
+        throw HttpException("Content-Length must contain only digits");
+      }
     } else if (value is String) {
-      contentLength = int.parse(value);
+      if (!_digitsValidator.hasMatch(value)) {
+        throw HttpException("Content-Length must contain only digits");
+      }
+      value = int.parse(value);
     } else {
       throw HttpException("Unexpected type for header named $name");
     }
+    contentLength = value;
   }
 
   void _addTransferEncoding(String name, value) {
diff --git a/tests/standalone/io/http_headers_content_length_test.dart b/tests/standalone/io/http_headers_content_length_test.dart
index 9997ffe..3ccf962 100644
--- a/tests/standalone/io/http_headers_content_length_test.dart
+++ b/tests/standalone/io/http_headers_content_length_test.dart
@@ -6,6 +6,8 @@
 
 import "package:expect/expect.dart";
 
+// See also http_headers_test.dart.
+
 Future<void> main() async {
   final server = await HttpServer.bind("localhost", 0);
   final request = await HttpClient().get("localhost", server.port, "/");
diff --git a/tests/standalone/io/http_headers_test.dart b/tests/standalone/io/http_headers_test.dart
index f2cfb6c..99884f6 100644
--- a/tests/standalone/io/http_headers_test.dart
+++ b/tests/standalone/io/http_headers_test.dart
@@ -361,6 +361,48 @@
   Expect.equals("v; a=\"ø\"", HeaderValue("v", {"a": "ø"}).toString());
 }
 
+void testContentLength() {
+  // See also http_headers_content_length_test.dart.
+  var headers = new _HttpHeaders("1.1");
+  headers.set("content-length", ["256"]);
+  Expect.equals(256, headers.contentLength);
+  Expect.listEquals(["256"], headers["content-length"]!);
+  Expect.equals("256", headers.value("content-length"));
+
+  headers = new _HttpHeaders("1.1");
+  headers.set("content-length", [256]);
+  Expect.equals(256, headers.contentLength);
+  Expect.listEquals(["256"], headers["content-length"]!);
+  Expect.equals("256", headers.value("content-length"));
+
+  headers = new _HttpHeaders("1.1");
+  var e = Expect.throws<HttpException>(
+      () => headers.set("content-length", ["cat"]));
+  Expect.isTrue(e.message.contains("Content-Length must contain only digits"));
+
+  headers = new _HttpHeaders("1.1");
+  e = Expect.throws(
+      () => headers.set("content-length", ["-3"]), (e) => e is HttpException);
+  Expect.isTrue(e.message.contains("Content-Length must contain only digits"));
+
+  headers = new _HttpHeaders("1.1");
+  e = Expect.throws(
+      () => headers.set("content-length", [-3]), (e) => e is HttpException);
+  Expect.isTrue(e.message.contains("Content-Length must contain only digits"));
+
+  headers = new _HttpHeaders("1.1");
+  e = Expect.throws(
+      () => headers.set("content-length", [[]]), (e) => e is HttpException);
+  Expect.isTrue(
+      e.message.contains("Unexpected type for header named content-length"));
+
+  headers = new _HttpHeaders("1.1");
+  headers.set("content-length", ["1", "2"]);
+  Expect.equals(2, headers.contentLength);
+  Expect.listEquals(["2"], headers["content-length"]!);
+  Expect.equals("2", headers.value("content-length"));
+}
+
 void testContentType() {
   void check(ContentType contentType, String primaryType, String subType,
       [Map<String, String?>? parameters]) {
@@ -743,6 +785,7 @@
   testTransferEncoding();
   testEnumeration();
   testHeaderValue();
+  testContentLength();
   testContentType();
   testKnownContentTypes();
   testContentTypeCache();
diff --git a/tests/standalone_2/io/http_headers_content_length_test.dart b/tests/standalone_2/io/http_headers_content_length_test.dart
index 6679db2..fb29369 100644
--- a/tests/standalone_2/io/http_headers_content_length_test.dart
+++ b/tests/standalone_2/io/http_headers_content_length_test.dart
@@ -4,6 +4,8 @@
 
 // @dart = 2.9
 
+// See also http_headers_test.dart.
+
 import "dart:io";
 
 import "package:expect/expect.dart";
diff --git a/tools/VERSION b/tools/VERSION
index b2c2691..af12ecc 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 19
 PATCH 0
-PRERELEASE 8
+PRERELEASE 9
 PRERELEASE_PATCH 0
\ No newline at end of file
