Version 2.18.0-244.0.dev

Merge commit 'b40969ea5733299e157ff33d22616ce69299491d' into 'dev'
diff --git a/pkg/compiler/lib/src/dump_info.dart b/pkg/compiler/lib/src/dump_info.dart
index 8459ff0..18cba93 100644
--- a/pkg/compiler/lib/src/dump_info.dart
+++ b/pkg/compiler/lib/src/dump_info.dart
@@ -546,8 +546,8 @@
   FunctionInfo visitFunction(ir.FunctionNode function,
       {FunctionEntity functionEntity, LocalFunctionInfo localFunctionInfo}) {
     final parent = function.parent;
-    String name =
-        parent is ir.LocalFunction ? 'call' : parent.toStringInternal();
+    bool isClosureCallMethod = parent is ir.LocalFunction;
+    String name = isClosureCallMethod ? 'call' : parent.toStringInternal();
     bool isConstructor = parent is ir.Constructor;
     bool isFactory = parent is ir.Procedure && parent.isFactory;
     // Kernel `isStatic` refers to static members, constructors, and top-level
@@ -562,7 +562,8 @@
         !isFactory;
     bool isConst = parent is ir.Member && parent.isConst;
     bool isExternal = parent is ir.Member && parent.isExternal;
-    bool isMethod = parent is ir.Member && parent.enclosingClass != null;
+    bool isMethod = isClosureCallMethod ||
+        (parent is ir.Member && parent.enclosingClass != null);
     bool isGetter = parent is ir.Procedure && parent.isGetter;
     bool isSetter = parent is ir.Procedure && parent.isSetter;
     int kind;
diff --git a/pkg/compiler/lib/src/js_backend/native_data.dart b/pkg/compiler/lib/src/js_backend/native_data.dart
index 56cabfd..20ae34a 100644
--- a/pkg/compiler/lib/src/js_backend/native_data.dart
+++ b/pkg/compiler/lib/src/js_backend/native_data.dart
@@ -13,7 +13,7 @@
 import '../elements/entities.dart';
 import '../ir/annotations.dart';
 import '../js_model/js_to_frontend_map.dart' show identity, JsToFrontendMap;
-import '../kernel/element_map.dart';
+import '../kernel/element_map_interfaces.dart';
 import '../native/behavior.dart' show NativeBehavior;
 import '../serialization/serialization.dart';
 import '../util/util.dart';
@@ -170,7 +170,7 @@
       this._jsInteropMembers);
 
   factory NativeBasicData.fromIr(
-      KernelToElementMap map, IrAnnotationData data) {
+      KernelToElementMapForNativeData map, IrAnnotationData data) {
     ElementEnvironment env = map.elementEnvironment;
     Map<ClassEntity, NativeClassTag> nativeClassTagInfo = {};
     Map<LibraryEntity, String> jsInteropLibraries = {};
@@ -452,7 +452,8 @@
       this._nativeFieldLoadBehavior,
       this._nativeFieldStoreBehavior);
 
-  factory NativeData.fromIr(KernelToElementMap map, IrAnnotationData data) {
+  factory NativeData.fromIr(
+      KernelToElementMapForNativeData map, IrAnnotationData data) {
     NativeBasicData nativeBasicData = NativeBasicData.fromIr(map, data);
     Map<MemberEntity, String> nativeMemberName = {};
     Map<FunctionEntity, NativeBehavior> nativeMethodBehavior = {};
diff --git a/pkg/compiler/lib/src/kernel/element_map.dart b/pkg/compiler/lib/src/kernel/element_map.dart
index 14ef134..dc09e06 100644
--- a/pkg/compiler/lib/src/kernel/element_map.dart
+++ b/pkg/compiler/lib/src/kernel/element_map.dart
@@ -4,8 +4,6 @@
 
 // @dart = 2.10
 
-import 'package:kernel/ast.dart' as ir;
-
 // TODO(joshualitt): Merge the contents of element_map_impl.dart into this file.
 export 'element_map_impl.dart';
 
@@ -17,21 +15,3 @@
   JS_INTERCEPTOR_CONSTANT,
   NONE,
 }
-
-// Members which dart2js ignores.
-bool memberIsIgnorable(ir.Member node, {ir.Class cls}) {
-  if (node is! ir.Procedure) return false;
-  ir.Procedure member = node;
-  switch (member.stubKind) {
-    case ir.ProcedureStubKind.Regular:
-    case ir.ProcedureStubKind.ConcreteForwardingStub:
-    case ir.ProcedureStubKind.NoSuchMethodForwarder:
-      return false;
-    case ir.ProcedureStubKind.AbstractForwardingStub:
-    case ir.ProcedureStubKind.MemberSignature:
-    case ir.ProcedureStubKind.AbstractMixinStub:
-    case ir.ProcedureStubKind.ConcreteMixinStub:
-      return true;
-  }
-  return false;
-}
diff --git a/pkg/compiler/lib/src/kernel/element_map_impl.dart b/pkg/compiler/lib/src/kernel/element_map_impl.dart
index 3335436..9198179 100644
--- a/pkg/compiler/lib/src/kernel/element_map_impl.dart
+++ b/pkg/compiler/lib/src/kernel/element_map_impl.dart
@@ -56,8 +56,12 @@
 import '../universe/world_impact.dart';
 
 import 'element_map.dart';
-import 'element_map_interfaces.dart'
-    show KernelToElementMapForClassHierarchy, KernelToElementMapForImpactData;
+import 'element_map_interfaces.dart' as interfaces
+    show
+        KernelElementEnvironment,
+        KernelToElementMapForClassHierarchy,
+        KernelToElementMapForImpactData,
+        KernelToElementMapForNativeData;
 import 'env.dart';
 import 'kelements.dart';
 import 'kernel_impact.dart';
@@ -66,9 +70,10 @@
 /// impact computation.
 class KernelToElementMap
     implements
-        IrToElementMap,
-        KernelToElementMapForClassHierarchy,
-        KernelToElementMapForImpactData {
+        interfaces.KernelToElementMapForClassHierarchy,
+        interfaces.KernelToElementMapForImpactData,
+        interfaces.KernelToElementMapForNativeData,
+        IrToElementMap {
   @override
   final CompilerOptions options;
   @override
@@ -136,6 +141,7 @@
   @override
   DartTypes get types => _types;
 
+  @override
   KernelElementEnvironment get elementEnvironment => _elementEnvironment;
 
   /// Access to the commonly used elements and types.
@@ -1649,6 +1655,7 @@
 
   /// Computes the native behavior for reading the native [field].
   /// TODO(johnniwinther): Cache this for later use.
+  @override
   NativeBehavior getNativeBehaviorForFieldLoad(ir.Field field,
       Iterable<String> createsAnnotations, Iterable<String> returnsAnnotations,
       {bool isJsInterop}) {
@@ -1660,6 +1667,7 @@
 
   /// Computes the native behavior for writing to the native [field].
   /// TODO(johnniwinther): Cache this for later use.
+  @override
   NativeBehavior getNativeBehaviorForFieldStore(ir.Field field) {
     DartType type = getDartType(field.type);
     return nativeBehaviorBuilder.buildFieldStoreBehavior(type);
@@ -1668,6 +1676,7 @@
   /// Computes the native behavior for calling the function or constructor
   /// [member].
   /// TODO(johnniwinther): Cache this for later use.
+  @override
   NativeBehavior getNativeBehaviorForMethod(ir.Member member,
       Iterable<String> createsAnnotations, Iterable<String> returnsAnnotations,
       {bool isJsInterop}) {
@@ -1762,7 +1771,7 @@
 }
 
 class KernelElementEnvironment extends ElementEnvironment
-    implements KElementEnvironment {
+    implements KElementEnvironment, interfaces.KernelElementEnvironment {
   final KernelToElementMap elementMap;
 
   KernelElementEnvironment(this.elementMap);
diff --git a/pkg/compiler/lib/src/kernel/element_map_interfaces.dart b/pkg/compiler/lib/src/kernel/element_map_interfaces.dart
index 8795952..fa1ff53 100644
--- a/pkg/compiler/lib/src/kernel/element_map_interfaces.dart
+++ b/pkg/compiler/lib/src/kernel/element_map_interfaces.dart
@@ -6,16 +6,35 @@
 // TODO(48820): Remove after migrating element_map.dart and
 // element_map_impl.dart.
 
-import 'package:kernel/ast.dart' as ir show DartType, Member;
+import 'package:kernel/ast.dart' as ir
+    show Class, DartType, Field, Member, Procedure, ProcedureStubKind;
 
 import '../common.dart' show DiagnosticReporter;
-import '../common/elements.dart' show CommonElements;
-import '../elements/entities.dart' show ClassEntity, ConstructorEntity;
+import '../common/elements.dart' show CommonElements, ElementEnvironment;
+import '../elements/entities.dart'
+    show ClassEntity, ConstructorEntity, MemberEntity;
 import '../elements/indexed.dart' show IndexedClass;
 import '../elements/types.dart' show DartType, DartTypes, InterfaceType;
 import '../ir/constants.dart' show Dart2jsConstantEvaluator;
+import '../native/behavior.dart';
 import '../options.dart';
 
+abstract class KernelElementEnvironment implements ElementEnvironment {}
+
+abstract class KernelToElementMapForNativeData {
+  KernelElementEnvironment get elementEnvironment;
+
+  ClassEntity getClass(ir.Class node);
+  MemberEntity getMember(ir.Member node);
+  NativeBehavior getNativeBehaviorForMethod(ir.Member member,
+      Iterable<String> createsAnnotations, Iterable<String> returnsAnnotations,
+      {required bool isJsInterop});
+  NativeBehavior getNativeBehaviorForFieldLoad(ir.Field field,
+      Iterable<String> createsAnnotations, Iterable<String> returnsAnnotations,
+      {required bool isJsInterop});
+  NativeBehavior getNativeBehaviorForFieldStore(ir.Field field);
+}
+
 abstract class KernelToElementMapForClassHierarchy {
   ClassEntity? getSuperClass(ClassEntity cls);
   int getHierarchyDepth(IndexedClass cls);
@@ -34,3 +53,20 @@
   ConstructorEntity getConstructor(ir.Member node);
   DartType getDartType(ir.DartType type);
 }
+
+// Members which dart2js ignores.
+bool memberIsIgnorable(ir.Member node, {ir.Class? cls}) {
+  if (node is! ir.Procedure) return false;
+  ir.Procedure member = node;
+  switch (member.stubKind) {
+    case ir.ProcedureStubKind.Regular:
+    case ir.ProcedureStubKind.ConcreteForwardingStub:
+    case ir.ProcedureStubKind.NoSuchMethodForwarder:
+      return false;
+    case ir.ProcedureStubKind.AbstractForwardingStub:
+    case ir.ProcedureStubKind.MemberSignature:
+    case ir.ProcedureStubKind.AbstractMixinStub:
+    case ir.ProcedureStubKind.ConcreteMixinStub:
+      return true;
+  }
+}
diff --git a/pkg/compiler/lib/src/kernel/env.dart b/pkg/compiler/lib/src/kernel/env.dart
index 2d71b3d..0606310 100644
--- a/pkg/compiler/lib/src/kernel/env.dart
+++ b/pkg/compiler/lib/src/kernel/env.dart
@@ -26,6 +26,7 @@
 import '../ordered_typeset.dart';
 import '../universe/member_usage.dart';
 import 'element_map.dart';
+import 'element_map_interfaces.dart' show memberIsIgnorable;
 
 /// Environment for fast lookup of component libraries.
 class KProgramEnv {
diff --git a/pkg/compiler/test/dump_info/data/closures.dart b/pkg/compiler/test/dump_info/data/closures.dart
index 6eef392..817e514 100644
--- a/pkg/compiler/test/dump_info/data/closures.dart
+++ b/pkg/compiler/test/dump_info/data/closures.dart
@@ -99,7 +99,95 @@
   ]
 }]*/
 class Class1<T> {
-  /*member: Class1.field:
+  /*spec.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()"
+},
+    {
+  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.field.Class1_field_closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 58,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::Class1.field.Class1_field_closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "Type",
+  "inferredReturnType": "[exact=_Type]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return A.createRuntimeType(this.T);\n    }",
+  "type": "Type Function()",
+  "functionKind": 2
+}],
+   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}]
+  */
+  /*canary.member: Class1.field:
    closure=[{
   "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.field.Class1_field_closure",
   "kind": "closure",
@@ -184,7 +272,72 @@
   */
   var funcField;
 
-  /*member: Class1.:
+  /*spec.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
+},
+    {
+  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.Class1.Class1_closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 58,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::Class1.Class1.Class1_closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "Type",
+  "inferredReturnType": "[exact=_Type]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return A.createRuntimeType(this.T);\n    }",
+  "type": "Type Function()",
+  "functionKind": 2
+}],
+   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}]
+  */
+  /*canary.member: Class1.:
    closure=[{
   "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.Class1.Class1_closure",
   "kind": "closure",
@@ -290,7 +443,72 @@
   "functionKind": 3
 }]*/
   factory Class1.fact() => new Class1<T>();
-  /*member: Class1.fact2:
+  /*spec.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
+},
+    {
+  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.Class1.fact2.Class1_Class1$fact2_closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 68,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::Class1.Class1.fact2.Class1_Class1$fact2_closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "Set<Class1.T>",
+  "inferredReturnType": "[subclass=_LinkedHashSet]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads anything; writes anything)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return A.LinkedHashSet_LinkedHashSet(this.T);\n    }",
+  "type": "Set<Class1.T> Function()",
+  "functionKind": 2
+}],
+   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}]
+  */
+  /*canary.member: Class1.fact2:
    closure=[{
   "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.Class1.fact2.Class1_Class1$fact2_closure",
   "kind": "closure",
@@ -357,7 +575,71 @@
   "functionKind": 2
 }]*/
   method1() => T;
-  /*member: Class1.method2:
+  /*spec.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
+},
+    {
+  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.method2.Class1_method2_closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 80,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::Class1.method2.Class1_method2_closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "Type",
+  "inferredReturnType": "[exact=_Type]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return A.createRuntimeType(this.$this.$ti._precomputed1);\n    }",
+  "type": "Type 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}]
+  */
+  /*canary.member: Class1.method2:
    closure=[{
   "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.method2.Class1_method2_closure",
   "kind": "closure",
@@ -425,7 +707,71 @@
   "functionKind": 2
 }]*/
   method3<S>() => S;
-  /*member: Class1.method4:
+  /*spec.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
+},
+    {
+  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.method4.Class1_method4_closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 58,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::Class1.method4.Class1_method4_closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "Type",
+  "inferredReturnType": "[exact=_Type]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return A.createRuntimeType(this.S);\n    }",
+  "type": "Type Function()",
+  "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}]
+  */
+  /*canary.member: Class1.method4:
    closure=[{
   "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.method4.Class1_method4_closure",
   "kind": "closure",
@@ -469,7 +815,106 @@
     return () => S;
   }
 
-  /*member: Class1.method5:
+  /*spec.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
+},
+    {
+  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.method5.Class1_method5_local.call",
+  "kind": "function",
+  "name": "call",
+  "size": 132,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::Class1.method5.Class1_method5_local",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "Type Function()",
+  "inferredReturnType": "[subclass=Closure]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$1$0($S) {\n      return new A.Class1_method5_local_closure($S);\n    }\ncall$0() {\n      return this.call$1$0(type$.dynamic);\n    }",
+  "type": "Type Function() Function<#A extends Object?>()",
+  "functionKind": 2
+},
+    {
+  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.method5.Class1_method5_local_closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 58,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::Class1.method5.Class1_method5_local_closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "Type",
+  "inferredReturnType": "[exact=_Type]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return A.createRuntimeType(this.S);\n    }",
+  "type": "Type 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}]
+  */
+  /*canary.member: Class1.method5:
    closure=[
     {
   "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.method5.Class1_method5_local",
@@ -529,7 +974,180 @@
     return local<double>();
   }
 
-  /*member: Class1.method6:
+  /*spec.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
+},
+    {
+  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6__closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 132,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6__closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "Map<Class1.T,method6.S>",
+  "inferredReturnType": "[exact=JsLinkedHashMap]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return new A.JsLinkedHashMap(this.$this.$ti._eval$1(\"@<1>\")._bind$1(this.S)._eval$1(\"JsLinkedHashMap<1,2>\"));\n    }",
+  "type": "Map<Class1.T,method6.S> Function()",
+  "functionKind": 2
+},
+    {
+  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6_closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 81,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6_closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "Map<Class1.T,method6.S> Function()",
+  "inferredReturnType": "[subclass=Closure]",
+  "parameters": [
+    {
+      "name": "o",
+      "type": "[subclass=Closure]",
+      "declaredType": "dynamic"
+    }
+  ],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$1(o) {\n      return new A.Class1_method6__closure(this.$this, this.S);\n    }",
+  "type": "Map<Class1.T,method6.S> Function() Function(dynamic)",
+  "functionKind": 2
+},
+    {
+  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6_local.call",
+  "kind": "function",
+  "name": "call",
+  "size": 140,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6_local",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "String Function()",
+  "inferredReturnType": "[subclass=Closure]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$1$0($U) {\n      return new A.Class1_method6_local_closure(this.S, $U);\n    }\ncall$0() {\n      return this.call$1$0(type$.dynamic);\n    }",
+  "type": "String Function() Function<#A extends Object?>()",
+  "functionKind": 2
+},
+    {
+  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6_local_closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 116,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6_local_closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "String",
+  "inferredReturnType": "[exact=JSString]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes anything)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return A.createRuntimeType(this.S).toString$0(0) + A.createRuntimeType(this.U).toString$0(0);\n    }",
+  "type": "String 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.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}]
+  */
+  /*canary.member: Class1.method6:
    closure=[
     {
   "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.method6.Class1_method6__closure",
@@ -638,7 +1256,71 @@
   "functionKind": 0
 }]*/
   static staticMethod1<S>() => S;
-  /*member: Class1.staticMethod2:
+  /*spec.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
+},
+    {
+  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod2.Class1_staticMethod2_closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 58,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod2.Class1_staticMethod2_closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "Type",
+  "inferredReturnType": "[exact=_Type]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return A.createRuntimeType(this.S);\n    }",
+  "type": "Type Function()",
+  "functionKind": 2
+}],
+   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}]
+  */
+  /*canary.member: Class1.staticMethod2:
    closure=[{
   "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod2.Class1_staticMethod2_closure",
   "kind": "closure",
@@ -682,7 +1364,106 @@
     return () => S;
   }
 
-  /*member: Class1.staticMethod3:
+  /*spec.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
+},
+    {
+  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod3.Class1_staticMethod3_local.call",
+  "kind": "function",
+  "name": "call",
+  "size": 138,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod3.Class1_staticMethod3_local",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "Type Function()",
+  "inferredReturnType": "[subclass=Closure]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$1$0($S) {\n      return new A.Class1_staticMethod3_local_closure($S);\n    }\ncall$0() {\n      return this.call$1$0(type$.dynamic);\n    }",
+  "type": "Type Function() Function<#A extends Object?>()",
+  "functionKind": 2
+},
+    {
+  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod3.Class1_staticMethod3_local_closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 58,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod3.Class1_staticMethod3_local_closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "Type",
+  "inferredReturnType": "[exact=_Type]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return A.createRuntimeType(this.S);\n    }",
+  "type": "Type 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.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",
@@ -742,7 +1523,180 @@
     return local<double>();
   }
 
-  /*member: Class1.staticMethod4:
+  /*spec.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
+},
+    {
+  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4__closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 68,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4__closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "Set<staticMethod4.S>",
+  "inferredReturnType": "[subclass=_LinkedHashSet]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads anything; writes anything)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return A.LinkedHashSet_LinkedHashSet(this.S);\n    }",
+  "type": "Set<staticMethod4.S> Function()",
+  "functionKind": 2
+},
+    {
+  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4_closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 75,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4_closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "Set<staticMethod4.S> Function()",
+  "inferredReturnType": "[subclass=Closure]",
+  "parameters": [
+    {
+      "name": "o",
+      "type": "[subclass=Closure]",
+      "declaredType": "dynamic"
+    }
+  ],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$1(o) {\n      return new A.Class1_staticMethod4__closure(this.S);\n    }",
+  "type": "Set<staticMethod4.S> Function() Function(dynamic)",
+  "functionKind": 2
+},
+    {
+  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4_local.call",
+  "kind": "function",
+  "name": "call",
+  "size": 146,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4_local",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "String Function()",
+  "inferredReturnType": "[subclass=Closure]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$1$0($U) {\n      return new A.Class1_staticMethod4_local_closure(this.S, $U);\n    }\ncall$0() {\n      return this.call$1$0(type$.dynamic);\n    }",
+  "type": "String Function() Function<#A extends Object?>()",
+  "functionKind": 2
+},
+    {
+  "id": "function/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4_local_closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 116,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4_local_closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "String",
+  "inferredReturnType": "[exact=JSString]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes anything)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return A.createRuntimeType(this.S).toString$0(0) + A.createRuntimeType(this.U).toString$0(0);\n    }",
+  "type": "String 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.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}]
+  */
+  /*canary.member: Class1.staticMethod4:
    closure=[
     {
   "id": "closure/memory:sdk/tests/web/native/main.dart::Class1.staticMethod4.Class1_staticMethod4__closure",
@@ -853,7 +1807,71 @@
 }]*/
 topLevelMethod1<S>() => S;
 
-/*member: topLevelMethod2:
+/*spec.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
+},
+  {
+  "id": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod2.topLevelMethod2_closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 58,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod2.topLevelMethod2_closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "Type",
+  "inferredReturnType": "[exact=_Type]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return A.createRuntimeType(this.S);\n    }",
+  "type": "Type Function()",
+  "functionKind": 2
+}],
+ 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}]
+*/
+/*canary.member: topLevelMethod2:
  closure=[{
   "id": "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod2.topLevelMethod2_closure",
   "kind": "closure",
@@ -897,7 +1915,106 @@
   return () => S;
 }
 
-/*member: topLevelMethod3:
+/*spec.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
+},
+  {
+  "id": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod3.topLevelMethod3_local.call",
+  "kind": "function",
+  "name": "call",
+  "size": 133,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod3.topLevelMethod3_local",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "Type Function()",
+  "inferredReturnType": "[subclass=Closure]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$1$0($S) {\n      return new A.topLevelMethod3_local_closure($S);\n    }\ncall$0() {\n      return this.call$1$0(type$.dynamic);\n    }",
+  "type": "Type Function() Function<#A extends Object?>()",
+  "functionKind": 2
+},
+  {
+  "id": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod3.topLevelMethod3_local_closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 58,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod3.topLevelMethod3_local_closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "Type",
+  "inferredReturnType": "[exact=_Type]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return A.createRuntimeType(this.S);\n    }",
+  "type": "Type 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::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",
@@ -957,7 +2074,180 @@
   return local<double>();
 }
 
-/*member: topLevelMethod4:
+/*spec.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
+},
+  {
+  "id": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4__closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 68,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4__closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "Set<topLevelMethod4.S>",
+  "inferredReturnType": "[subclass=_LinkedHashSet]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads anything; writes anything)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return A.LinkedHashSet_LinkedHashSet(this.S);\n    }",
+  "type": "Set<topLevelMethod4.S> Function()",
+  "functionKind": 2
+},
+  {
+  "id": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4_closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 70,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4_closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "Set<topLevelMethod4.S> Function()",
+  "inferredReturnType": "[subclass=Closure]",
+  "parameters": [
+    {
+      "name": "o",
+      "type": "[subclass=Closure]",
+      "declaredType": "dynamic"
+    }
+  ],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$1(o) {\n      return new A.topLevelMethod4__closure(this.S);\n    }",
+  "type": "Set<topLevelMethod4.S> Function() Function(dynamic)",
+  "functionKind": 2
+},
+  {
+  "id": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4_local.call",
+  "kind": "function",
+  "name": "call",
+  "size": 141,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4_local",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "String Function()",
+  "inferredReturnType": "[subclass=Closure]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$1$0($U) {\n      return new A.topLevelMethod4_local_closure(this.S, $U);\n    }\ncall$0() {\n      return this.call$1$0(type$.dynamic);\n    }",
+  "type": "String Function() Function<#A extends Object?>()",
+  "functionKind": 2
+},
+  {
+  "id": "function/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4_local_closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 116,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4_local_closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "String",
+  "inferredReturnType": "[exact=JSString]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes anything)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return A.createRuntimeType(this.S).toString$0(0) + A.createRuntimeType(this.U).toString$0(0);\n    }",
+  "type": "String 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::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}]
+*/
+/*canary.member: topLevelMethod4:
  closure=[
   {
   "id": "closure/memory:sdk/tests/web/native/main.dart::topLevelMethod4.topLevelMethod4__closure",
@@ -1042,7 +2332,107 @@
   return local2(local<double>());
 }
 
-/*member: twoLocals:
+/*spec.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
+},
+  {
+  "id": "function/memory:sdk/tests/web/native/main.dart::twoLocals.twoLocals_local1.call",
+  "kind": "function",
+  "name": "call",
+  "size": 16,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::twoLocals.twoLocals_local1",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "Null",
+  "inferredReturnType": "[null]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n    }",
+  "type": "Null Function()",
+  "functionKind": 2
+},
+  {
+  "id": "function/memory:sdk/tests/web/native/main.dart::twoLocals.twoLocals_local2.call",
+  "kind": "function",
+  "name": "call",
+  "size": 51,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::twoLocals.twoLocals_local2",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "Null",
+  "inferredReturnType": "[null]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return this.local1.call$0();\n    }",
+  "type": "Null Function()",
+  "functionKind": 2
+}],
+ 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}]
+*/
+/*canary.member: twoLocals:
  closure=[
   {
   "id": "closure/memory:sdk/tests/web/native/main.dart::twoLocals.twoLocals_local1",
@@ -1101,7 +2491,105 @@
   return local2;
 }
 
-/*member: nested:
+/*spec.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
+},
+  {
+  "id": "function/memory:sdk/tests/web/native/main.dart::nested.nested_nested1.call",
+  "kind": "function",
+  "name": "call",
+  "size": 74,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::nested.nested_nested1",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "Null",
+  "inferredReturnType": "[null]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      this._box_0.x = new A.nested_nested1_nested2(this);\n    }",
+  "type": "Null Function()",
+  "functionKind": 2
+},
+  {
+  "id": "function/memory:sdk/tests/web/native/main.dart::nested.nested_nested1_nested2.call",
+  "kind": "function",
+  "name": "call",
+  "size": 43,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::nested.nested_nested1_nested2",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "dynamic Function()",
+  "inferredReturnType": "[subclass=Closure]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return this.nested1;\n    }",
+  "type": "dynamic Function() Function()",
+  "functionKind": 2
+}],
+ 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}]
+*/
+/*canary.member: nested:
  closure=[
   {
   "id": "closure/memory:sdk/tests/web/native/main.dart::nested.nested_nested1",
@@ -1163,7 +2651,139 @@
   x();
 }
 
-/*member: nested2:
+/*spec.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
+},
+  {
+  "id": "function/memory:sdk/tests/web/native/main.dart::nested2.nested2_local1.call",
+  "kind": "function",
+  "name": "call",
+  "size": 70,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::nested2.nested2_local1",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "int",
+  "inferredReturnType": "[subclass=JSInt]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads anything; writes anything)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return new A.nested2_local1_closure().call$0();\n    }",
+  "type": "int Function()",
+  "functionKind": 2
+},
+  {
+  "id": "function/memory:sdk/tests/web/native/main.dart::nested2.nested2_local1__closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 32,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::nested2.nested2_local1__closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "int",
+  "inferredReturnType": "[exact=JSUInt31]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return 2;\n    }",
+  "type": "int Function()",
+  "functionKind": 2
+},
+  {
+  "id": "function/memory:sdk/tests/web/native/main.dart::nested2.nested2_local1_closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 154,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::nested2.nested2_local1_closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "int",
+  "inferredReturnType": "[subclass=JSInt]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads anything; writes anything)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      var t1 = new A.nested2_local1__closure().call$0();\n      if (typeof t1 !== \"number\")\n        return A.iae(t1);\n      return 1 + t1;\n    }",
+  "type": "int Function()",
+  "functionKind": 2
+}],
+ 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}]
+*/
+/*canary.member: nested2:
  closure=[
   {
   "id": "closure/memory:sdk/tests/web/native/main.dart::nested2.nested2_local1",
@@ -1235,7 +2855,139 @@
   print(y);
 }
 
-/*member: siblings:
+/*spec.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
+},
+  {
+  "id": "function/memory:sdk/tests/web/native/main.dart::siblings.siblings_local1.call",
+  "kind": "function",
+  "name": "call",
+  "size": 115,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::siblings.siblings_local1",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "int",
+  "inferredReturnType": "[subclass=JSInt]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads anything; writes anything)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return new A.siblings_local1_closure().call$0() + new A.siblings_local1_closure0().call$0();\n    }",
+  "type": "int Function()",
+  "functionKind": 2
+},
+  {
+  "id": "function/memory:sdk/tests/web/native/main.dart::siblings.siblings_local1_closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 32,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::siblings.siblings_local1_closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "int",
+  "inferredReturnType": "[exact=JSUInt31]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return 1;\n    }",
+  "type": "int Function()",
+  "functionKind": 2
+},
+  {
+  "id": "function/memory:sdk/tests/web/native/main.dart::siblings.siblings_local1_closure.call%0",
+  "kind": "function",
+  "name": "call",
+  "size": 32,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::siblings.siblings_local1_closure%0",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "int",
+  "inferredReturnType": "[exact=JSUInt31]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return 3;\n    }",
+  "type": "int Function()",
+  "functionKind": 2
+}],
+ 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}]
+*/
+/*canary.member: siblings:
  closure=[
   {
   "id": "closure/memory:sdk/tests/web/native/main.dart::siblings.siblings_local1",
diff --git a/pkg/compiler/test/dump_info/data/deferred/main.dart b/pkg/compiler/test/dump_info/data/deferred/main.dart
index 4baf1e1..2ab399c 100644
--- a/pkg/compiler/test/dump_info/data/deferred/main.dart
+++ b/pkg/compiler/test/dump_info/data/deferred/main.dart
@@ -121,7 +121,80 @@
 
 import 'lib.dart' deferred as lib;
 
-/*member: main:
+/*spec.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
+},
+  {
+  "id": "function/memory:sdk/tests/web/native/main.dart::main.main_closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 84,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::main.main_closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "Null",
+  "inferredReturnType": "[null]",
+  "parameters": [
+    {
+      "name": "_",
+      "type": "[null|subclass=Object]",
+      "declaredType": "dynamic"
+    }
+  ],
+  "sideEffects": "SideEffects(reads anything; writes anything)",
+  "inlinedCount": 0,
+  "code": "call$1(_) {\n      A.checkDeferredIsLoaded(\"lib\");\n      C.C_Deferred.call$0();\n    }",
+  "type": "Null Function(dynamic)",
+  "functionKind": 2
+}],
+ 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}]
+*/
+/*canary.member: main:
  closure=[{
   "id": "closure/memory:sdk/tests/web/native/main.dart::main.main_closure",
   "kind": "closure",
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 b9fea3b..51ce89b 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
@@ -356,7 +356,8 @@
   "parent": "function/memory:sdk/tests/web/native/main.dart::main",
   "function": "function/memory:sdk/tests/web/native/main.dart::main.main_closure.call"
 }],
- function=[{
+ function=[
+  {
   "id": "function/memory:sdk/tests/web/native/main.dart::main",
   "kind": "function",
   "name": "main",
@@ -380,6 +381,29 @@
   "code": "main() {\n      var s = new A.Subclass();\n      A.Clazz.prototype.get$method.call(s).call$1(0);\n      A.Expect_throws(new A.main_closure(s), type$.legacy_Object);\n    }",
   "type": "dynamic Function()*",
   "functionKind": 0
+},
+  {
+  "id": "function/memory:sdk/tests/web/native/main.dart::main.main_closure.call",
+  "kind": "function",
+  "name": "call",
+  "size": 71,
+  "outputUnit": "outputUnit/main",
+  "parent": "closure/memory:sdk/tests/web/native/main.dart::main.main_closure",
+  "children": [],
+  "modifiers": {
+    "static": false,
+    "const": false,
+    "factory": false,
+    "external": false
+  },
+  "returnType": "void",
+  "inferredReturnType": "[null]",
+  "parameters": [],
+  "sideEffects": "SideEffects(reads nothing; writes nothing)",
+  "inlinedCount": 0,
+  "code": "call$0() {\n      return this.s.super$Mixin$method(A._asIntS(\"\"));\n    }",
+  "type": "void Function()",
+  "functionKind": 2
 }],
  holding=[
   {"id":"function/dart:_js_helper::closureFromTearOff","mask":null},
diff --git a/pkg/compiler/test/dump_info/dump_info_new_regression_test.dart b/pkg/compiler/test/dump_info/dump_info_new_regression_test.dart
index baae6e9..5699d15 100644
--- a/pkg/compiler/test/dump_info/dump_info_new_regression_test.dart
+++ b/pkg/compiler/test/dump_info/dump_info_new_regression_test.dart
@@ -60,7 +60,7 @@
     }
 
     // Remove disambiguation portions of names. E.g., name%N -> name.
-    if (key == 'id' || key == 'name' || key == 'function') {
+    if (key == 'id' || key == 'name' || key == 'function' || key == 'parent') {
       newValue = value.replaceAll(RegExp(r'%\d+'), '');
     } else if (key == 'children') {
       List values = object[key];
@@ -214,6 +214,8 @@
       for (final closure in functionInfo.closures) {
         features.addElement(
             Tags.closure, jsonEncode(closure.accept(converter)));
+        features.addElement(
+            Tags.function, jsonEncode(closure.function.accept(converter)));
       }
     }
 
@@ -227,6 +229,8 @@
       for (final closure in functionInfo.closures) {
         features.addElement(
             Tags.closure, jsonEncode(closure.accept(converter)));
+        features.addElement(
+            Tags.function, jsonEncode(closure.function.accept(converter)));
       }
     }
 
diff --git a/pkg/compiler/test/dump_info/dump_info_new_test.dart b/pkg/compiler/test/dump_info/dump_info_new_test.dart
index 97c9595..9599f1a 100644
--- a/pkg/compiler/test/dump_info/dump_info_new_test.dart
+++ b/pkg/compiler/test/dump_info/dump_info_new_test.dart
@@ -165,6 +165,8 @@
       for (final closure in functionInfo.closures) {
         features.addElement(
             Tags.closure, jsonEncode(closure.accept(converter)));
+        features.addElement(
+            Tags.function, jsonEncode(closure.function.accept(converter)));
       }
     }
 
@@ -178,6 +180,8 @@
       for (final closure in functionInfo.closures) {
         features.addElement(
             Tags.closure, jsonEncode(closure.accept(converter)));
+        features.addElement(
+            Tags.function, jsonEncode(closure.function.accept(converter)));
       }
     }
 
diff --git a/pkg/compiler/test/dump_info/dump_info_test.dart b/pkg/compiler/test/dump_info/dump_info_test.dart
index 1b3c017..3059465 100644
--- a/pkg/compiler/test/dump_info/dump_info_test.dart
+++ b/pkg/compiler/test/dump_info/dump_info_test.dart
@@ -163,6 +163,8 @@
       for (final closure in functionInfo.closures) {
         features.addElement(
             Tags.closure, jsonEncode(closure.accept(converter)));
+        features.addElement(
+            Tags.function, jsonEncode(closure.function.accept(converter)));
       }
     }
 
@@ -176,6 +178,8 @@
       for (final closure in functionInfo.closures) {
         features.addElement(
             Tags.closure, jsonEncode(closure.accept(converter)));
+        features.addElement(
+            Tags.function, jsonEncode(closure.function.accept(converter)));
       }
     }
 
diff --git a/pkg/compiler/test/model/cfe_annotations_test.dart b/pkg/compiler/test/model/cfe_annotations_test.dart
index 76eb078..7d1fd81 100644
--- a/pkg/compiler/test/model/cfe_annotations_test.dart
+++ b/pkg/compiler/test/model/cfe_annotations_test.dart
@@ -10,6 +10,8 @@
 import 'package:compiler/src/elements/entities.dart';
 import 'package:compiler/src/ir/annotations.dart';
 import 'package:compiler/src/js_backend/native_data.dart';
+import 'package:compiler/src/kernel/element_map_interfaces.dart'
+    show memberIsIgnorable;
 import 'package:compiler/src/kernel/kernel_strategy.dart';
 import 'package:compiler/src/kernel/element_map.dart';
 import 'package:expect/expect.dart';
diff --git a/tools/VERSION b/tools/VERSION
index bdb2bf8..1525dd4 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 18
 PATCH 0
-PRERELEASE 243
+PRERELEASE 244
 PRERELEASE_PATCH 0
\ No newline at end of file